java項目打成jar包時引用了第三方jar ---linux 運行

java項目打成jar包時引用了第三方jar,此時咱們該如何解決呢

Web項目作多了,反而對單純的java項目陌生了,今天咱們在開發項目的過程當中,碰到一個這樣的需求:須要將java項目放到linux系統上跑起來,固然這個javaSE項目是帶main方法的。咱們知道在IDE裏寫完JavaSE項目後,運行很是簡單,只要本地java環境裝好了,右擊main方法---->run as-->java application就行,那麼放到linux上呢?目前咱們想到的有兩種方法:一種是打成jar包放到服務器上,用命令java -jar ****.jar執行jar包便可。另一種也是挺常見的將java項目放到服務器上,而後寫一個shell腳本執行。關於方法二,還正在嘗試之中。今天我要說的是方法一操做時須要注意的。java

打jar包很簡單,直接在myeclipse或者eclipse裏導出jar包就行。具體作法是:linux

右擊項目------->export---->選擇JAR file:shell

------>next----->:指定導出的jar包具體存放位置即jar包名稱:服務器

------>next--->默認:app

------>選擇要執行的main方法:框架

----->finesh,這樣將JavaSE項目打成jar包就完成了,到此就能夠放到服務器上執行java -jar test.jar,就執行指定的main方法了。eclipse

至此,若是你寫的java項目沒有引入第三方的jar包,一點問題都沒有,可是一旦你引入了框架呀或者本身公司寫的jar包時,問題就悄悄來了,待你執行時就會發現拋出了NoClassDeFined諸如此類的問題,也就是找不到這個類,這時候你也許會奇怪,爲啥呀,明明有這個類啊,那是你的錯覺,你在IDE裏導入了須要的jar包,固然會有了,但問題時你如今執行的這個jar文件放到了服務器上,它裏面是否包含了這個jar呢,原來我覺得打成jar包時就把引入的jar包一併再次打包,如今想一想應該不會吧。呵呵,具體我還沒怎麼去深究,今天我們先把這個解決方法說了。3d

步驟一:在你服務器存放jar包的同級目錄下建立一個lib目錄,而且將全部須要導入的第三方jar包全放進去,一個也不要剩:blog

步驟二:在IDE裏準備清單文件:MANIFEST.MF,即在項目的目錄下,新建一個MANIFEST.MF文件,先不要問爲何,相信我,我們先解決掉我們問題後再說:ip

關於清單文件裏的內容:

ManifestMain-Version:版本,1.0

Class-Path:將第三方的jar名都放進去,注意:後面要留一個空格

Main-Class:jar包要執行的main方法,記得寫類的全路徑,同事:後面要留一個空格。

OK了,清單文件準備完成了,繼續下一步操做。

步驟三:從新打jar包,步驟和原來的同樣,export---next---...可是有一點區別的是,以下須要使用本身寫好的清單文件:

相關文章
相關標籤/搜索