java项目导出为jar文件 运行jar文件会报错。 缺少我已经加好的包

build path 都已经添加好了

然后把项目导出成jar文件

然后运行这个文件会提示缺少我刚才build path引用的包
就是这个B样

你导出的jar包要用到其他jar包,那么你导出的jar包里有这样一个文件MANIFEST.MF,你有没有设置,它就是用来设置main类,和class_path的,在这里你要把需要的jar都写上,至于路径都是相对于你导出的这个jar包的相对位置。我给你一段示例:
***************************************************************************************
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.1
Created-By: 1.5.0_22-b03 (Sun Microsystems Inc.)
Main-Class: com.nari.syslog.server.Syslog4jServer
Class-Path: . lib/jna.jar lib/log4j-1.2.14.jar lib/commons-pool.jar li
b/joda-time-2.1.jar lib/syslog4j-0.9.46-bin.jar lib/h2-1.3.159.jar li
b/CollectRmiServerC.jar lib/quartz-all-1.6.4.jar lib/activemq-all-5.3
.2.jar lib/commons-collections-3.2.jar lib/dom4j-1.6.1.jar lib/jaxen-
1.1-beta-7.jar

***************************************************************************************
看到 lib/XX.jar形式了么,至于这个lib就是和导出的jar包同级目录下面的一个文件夹,然后将所需要的其他jar包都放到lib文件夹下,再运行该导出jar文件,就会找到所引用的jar包了,搞熟练了就没什么了,这些都可以借用MyEclipse的导入导出功能,这些配置性的东西都会自动生成,没必要记。
你可以继续追问,不行的话,再call我,今天上班没事干追问

这个.mf文件在我生成的jar文件里。 但是我无法再打开这个文件修改它

刚你说的。可以再导出时Exlipse自动加入jar。。 这个怎么弄?

在哪一步 叫什么??

追答

1.右键此jar文件--打开方式--winrar--将里面的manifest.mf解压到桌面--记事本方式打开并编辑它--编辑好以后保存--用鼠标直接将其拖入解压时的winrar的界面里--提示是否替换--确定即可。

2.用myeclipse导出。我给你贴图吧。

我默认都保存到桌面上啊,**.jar你自定义导出的jar的名字;

至于最后一张图片中build.xml点击browse浏览,选桌面,保存到桌面,点击完成,之后你将发现桌面上多出两个文件,一个文件夹,其中一个是**.jar,另个是build.xml,还有一个同名文件夹,里面都是第三方jar包。

最后,这个build.xml是ant工具的配置文件,你把它研究一下,然后考到项目里面,右键运行,就会重复以上操作,等于是利用ant来打包,很是方便。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-23
这是因为生成jar文件的位置没有找到对应的jar包。
可能解决办法一:
第一步:在生成jar的位置,创建一个文件夹,名称为lib;
第二步:将所有的依赖jar放到lib下,之后再运行即可。
可能解决办法二:
第一步:将所有的依赖jar放到jar包同级路径下,之后再运行即可。
备注:以上两种方式肯定能够解决问题,并且方法二的可能性比较大。
第2个回答  2012-08-01
classpath设置的有问题,jxl的jar包没有找到 。你写的这种执行jar的方式,java -jar TestCase.jar
必须在jar中META-INF目录下的MATNIFEST.MF文件中加入
Main-Class: ly.A 替换为你的主类

Class-Path: lib/snmp6_0.jar lib/grammatica-1.5.jar lib/commons-dbcp.ja
r lib/commons-dbutils-1.4.jar lib/commons-pool.jar lib/h2-1.3.159.jar
lib/log4j-1.2.15.jar 替换为你所引用的所有jar包追问

怎么讲?

怎么调?

追答

你就改下MATNIFEST.MF文件就行了

第3个回答  2012-08-01
在项目中引用的包最好是把包拷贝到项目中的一个位置,然后引用,或是直接把引用的包拷贝到lib下,这样你再重新打包试试追问

我用的包 就在工程的lib包下面。 导入也是从这里到的

第4个回答  2012-08-01
百度追问

你妹

java项目导出为jar文件 运行jar文件会报错。 缺少我已经加好的包
1.1-beta-7.jar 看到 lib\/XX.jar形式了么,至于这个lib就是和导出的jar包同级目录下面的一个文件夹,然后将所需要的其他jar包都放到lib文件夹下,再运行该导出jar文件,就会找到所引用的jar包了,搞熟练了就没什么了,这些都可以借用MyEclipse的导入导出功能,这些配置性的东西都会自动生成,没必要记。

java中jar文件出错
当在JAVA中运行JAR文件时出现“invalid or corrupt jarfile”错误,通常表示JAR文件已损坏或者不符合JAR文件格式规范。要解决这个问题,可以采取验证JAR文件的完整性、重新下载或构建JAR文件、使用文件管理器检查以及利用压缩工具进行修复等方法。首先,这个错误可能意味着JAR文件在下载或传输过程中被...

为什么Eclipse建的Java项目打成jar包执行不了,老是报错
有可能是项目引入的jar包没有打入到jar中,建议用专门的jar打包插件比如fatjar

JAVA 中JAR 运行rrupt jarfile,怎么解决?
遇到JAVA中JAR文件运行时出现Invalid or corrupt jarfile的问题,首先需要检查jar文件是否损坏。打开损坏的jar文件尝试用WinRAR进行解压,如果过程中出现报错,那么问题就出在文件本身。在打包jar文件时,需要遵循正确的步骤。例如,使用命令 "jar -cvf hello.jar hello.class" 来创建jar包。然而,初次打包后...

Java打包成jar后运行时出错,为什么?
可能jar文件损坏了,你可以尝试用winrar打开这个jar文件,把它解压,看有没有报错,如果报错,说明文件损坏了。打包成jar文件后运行出现Invalid or corrupt jarfile 解决打jar包 1。jar -cvf hello。jar hello。class 2。这时java -jar hello。jar 是运行不了的 3。解压刚打的Jar包到新的目录,会发现...

运行jar文件时出错了,怎嘛回事啊?
打包好的jar文件双击运行时报: Failed to load Main-Class manifest attribute from ...,这是由于未设置程序运行的入口程序导致的,可以将jar文件用WinRAR打开,展开META-INF文件夹,查看MANIFEST.MF 文件,可以发现Main-Class未设置,这就是导致异常的原因所在,设置格式:Main-Class: norepeat.NoRepeat...

用Java生成Jar文件报错如下图,什么情况
是因为MAINFEST.MF文件的Class-path:后面少了一空格 Manifest-Version: 1.0 Class-Path:2、Main-Class: 的冒号后面要加一个空格。java.io.IOException:invalid header field at java.util.jar.Attributes.read<Attributes.java:359> ar...异常位置省略。当时我的manifest.mf文件内容为:Manifest-Version...

JAVA中JAR运行出现invalidorcorruptjarfile怎么解决
遇到Java中JAR文件运行时出现“invalid or corrupt jar file”错误,通常意味着JAR文件本身有问题,或者在处理该文件时发生了错误。解决这类问题,可以尝试以下几个步骤:1. **验证JAR文件完整性**:首先确认JAR文件在传输或下载过程中是否完整无损。如果可能,重新下载或复制JAR文件。2. **检查JAR文件...

写的打包好的jar软件为什么在电脑上显示压缩包,运行不了。
程序再Eclipse中能运行,程序肯定没有问题,用Eclipse的向导导出应该也不会有问题,唉,直接执行不了,到cmd试一下,java -jar MyCipher.jar,报错了,一看错误,是某个类找不到,这个类是我应用的jar文件里的,这让我想到了jvm的类装载机制,一定是类装载器在当前路径里找不到我引入的jar文件里的...

在java中,编译一个源文件时总提示找不到包,包我已经定义了.
如果都不是楼上的几位仁史说的原因(即文件路径及包层次方面的原因)。试着检查一下是不是CLASSPATH这个环境变量的原因。即CLASSPATH这个环境变量记得加当前目录。"."一个点即表示“当前目录”的意思。如果你连CLASSPATH这个环境变量都没加上的话,那先添加上吧,最简单的一种情况是让它的值等一个...

相似回答