我用的是mars4.5版本的eclipse
需求:要把寫好的工程打成jar包,並能直接運行。工程用了若干個第三方jar。
在打包的時候,eclipse提供的打包方法不能引用第三方jar包,導致了出現ClassNotFoundException,此時可以采取兩種解決方式。
1.自定義 MANIFEST.MF文件 指定Main-Class,Class-Path 並在Class-Path指定的路徑下放置第三方jar包
注意事項:
1、Class-Path: 和Main-Class: 后邊都有一個空格,必須加上,否則會打包失敗,錯誤提示為:Invalid header field; 2、假設我們的項目打包后為KillCheatFans.jar,那么按照上面的定義,應該在 KillCheatFans.jar的同層目錄下建立一個lib文件夾(即lib文件和打包的jar文件
在同一個目錄下),並將相關的jar包放在里面。否則將會出現“Exception in thread "main" java.lang.NoClassDefFoundError”的錯誤; 3、Main-Class后面是類的全地址,比如你的主文件是KillCheatFans.java,文件里打包為package com.main; 那么這里就寫com.main.KillCheatFans,
不要加.java后綴,主文件地址寫錯將會出現“找不到或無法加載主類”的錯誤; 4、寫完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就出現了這個選項
選上Main-Class,再選上要包含的第三方jar包即可。