java -jar 报错,classnotfound

打包可执行jar包时,MANIFEST.MF总是个让人头疼的东西,经常出现这种那种问题。 
一个例子:  
================================================================================ 
Manifest-Version: 1.0 
Main-Class: test.Main 
Class-Path: ./ ./lib/commons-collections-3.2.jar ./lib/commons-dbcp-1.2.2.jar 
  ./lib/commons-lang-2.3.jar ./lib/commons-logging-1.1.jar 

================================================================================ 
各部分解释: 
Manifest-Version MF文件版本号 
Main-Class 包含main方法的类 
Class-Path 执行这个jar包时的ClassPath 

以下是需要注意的各个要点: 
1. Manifest-Version、Main-Class和Class-Path后面跟着一个英文的冒号,冒号后面必须跟着一个 空格 ,然后才是版本号、类和ClassPath。 
2. Class-Path中的各项应使用 空格 分隔,不是逗号或分号。 
3. Class-Path中如果有很多项,写成一行打包的时候会报错line too long,这时需要把Class-Path分多行写。注意:从第二行开始,必须以 两个空格 开头,三个以上我没试过,不过不用空格开头和一个空格开头都是不行的,我已经试过了。 
4. Class-Path写完之后最后一定要有一个 空行 。 

5. jar包内有些配置文件想放在jar包外面,比如文件config.properties:如果这个文件是以路径方式载入的,比如new file("./config/config.properties"),那么将config.properties放在jar包相同目录下的config目录下即可,也就是说“./”路径等价于jar包所在目录;如果这个文件是以ClassPath下的文件这种方式载入的,比如在Spring中载入classpath:config.properties,则在MF文件的配置文件的ClassPath中添加“./”,然后将这个配置文件与jar包放在同一个目录即可,当然也可以在MF文件的配置文件的ClassPath中添加“./config/”,然后把配置文件都放在jar包相同目录下的config目录下。

方案一: 
java -classpath %classpath%;/lib/activation.jar;/lib/ant.jar;.../lib/xstream-1.2.1.jar org.mule.MuleServer -config /conf/HBADCservice-config.xml -props /conf/vaseai.properties 
使用这种方案对classpath参数长度有限制,如果jar包太多会报错,需要分多行写,该方案和方案四是一样的,详情请参阅方案四的链接。 

方案二: 
将自己的classes文件打成jar包并和所依赖jar包放在lib文件夹中后执行如下命令 
java -Djava.ext.dirs=/lib/ org.mule.MuleServer -config /conf/HBADCservice-config.xml -props /conf/vaseai.properties 

方案三 
自己的classes不打包成jar包,但必须使用cp或classpath参数指定自己的classes所在路径 
java -Djava.ext.dirs=/lib/ -cp [classes] org.mule.MuleServer -config /conf/HBADCservice-config.xml -props /conf/vaseai.properties 


说明:org.mule.MuleServer中包含main方法,蓝色字体部分会自动保存到main(String[] args)的字符串数组中,自动按空格分割参数,若参数中带有空格需使用引号括起来,本例中字符串数组args长度将是4。 

方案四: 
将java项目导出为jar包然后在dos下运行 
可执行jar包的MANIFEST.MF

jar命令成功完成 java -jar 命令却提示“没有主清单属性”!

http://blog.csdn.net/teresa502/article/details/40149201

将java项目导出为jar包然后在dos下运行

http://blog.csdn.net/wxlfight/article/details/7629487



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值