我用的是mars4.5版本的eclipse
需求:要把写好的工程打成jar包,并能直接运行。工程用了若干个第三方jar。
在打包的时候,eclipse提供的打包方法不能引用第三方jar包,导致了出现ClassNotFoundException,此时可以采取两种解决方式。
1.自定义 MANIFEST.MF文件 指定Main-Class,Class-Path 并在Class-Path指定的路径下放置第三方jar包
注意事项:
- Class-Path: 和Main-Class: 后边都有一个空格,必须加上,否则会打包失败,错误提示为:Invalid headerfield;
- 假设我们的项目打包后为MergePic.jar,那么按照上面的定义,应该在MergePic.jar的同层目录下放置第三方jar包。否则将会现“Exception in thread “main”java.lang.NoClassDefFoundError”的错误;
- Main-Class后面是类的全地址,比如你的主文件是MergeByTid.java,那么这里就写org.gh.mergePic.service.MergeByTid,不要加.java后缀,主文件地址写错将会出现“找不到或无法加载主类”的错误;
- 写完Main-Class后一定要回车(即最后一行是空白行),让光标到下一行,这样你生成的jar包才能找到你的主class去运行,否则将会出现“jar中没有主清单属性”的错误。
2.显然上面的方法在遇到大量第三方jar包时会很麻烦,所以推荐使用eclipse的fat jar插件进行打包,可以将第三方jar包连同工程加入到一个jar包中
安装方法:
- Eclipse在线更新方法
Help > Install New Software > Add,
name:Fat Jar
location:http://kurucz-grafika.de/fatjar
此时eclipse4.4以上的版本可能会产生 这个错误,可以点开链接查看解决方法。
Eclipse4.4安装旧版本插件报错 Failed to prepare partial IU
然后再选export就出现了这个选项
选上Main-Class,再选上要包含的第三方jar包即可。
参考列表
http://www.cnblogs.com/lanxuezaipiao/p/3291641.html
http://blog.csdn.net/wonder4/article/details/39778013