eclipse打包jar时包含第三方jar包的相关问题

时间:2021-09-25 18:34:37

我用的是mars4.5版本的eclipse

需求:要把写好的工程打成jar包,并能直接运行。工程用了若干个第三方jar。

在打包的时候,eclipse提供的打包方法不能引用第三方jar包,导致了出现ClassNotFoundException,此时可以采取两种解决方式。

1.自定义 MANIFEST.MF文件 指定Main-Class,Class-Path 并在Class-Path指定的路径下放置第三方jar包

eclipse打包jar时包含第三方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包中

安装方法:

  1. 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就出现了这个选项
eclipse打包jar时包含第三方jar包的相关问题

选上Main-Class,再选上要包含的第三方jar包即可。

eclipse打包jar时包含第三方jar包的相关问题

参考列表
http://www.cnblogs.com/lanxuezaipiao/p/3291641.html
http://blog.csdn.net/wonder4/article/details/39778013