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腳本執行。關於方法二,還正在嘗試之中。今天我要說的是方法一操作時需要注意的。

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

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

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

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

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

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

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

步驟一:在你服務器存放jar包的同級目錄下創建一個lib目錄,並且將所有需要導入的第三方jar包全放進去,一個也不要剩:

步驟二:在IDE里准備清單文件:MANIFEST.MF,即在項目的目錄下,新建一個MANIFEST.MF文件,先不要問為什么,相信我,咱們先解決掉咱們問題后再說:

關於清單文件里的內容:

ManifestMain-Version:版本,1.0

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

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

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

步驟三:重新打jar包,步驟和原來的一樣,export---next---...但是有一點區別的是,如下需要使用自己寫好的清單文件:

步驟四:jar包打好了,傳到你的linux服務器上吧,記得和lib放在同一級目錄下,這樣執行java -jar test.jar就能順利執行了。

今天只是說明了其中的一種解決辦法,至於原理我想你在寫清單文件的時候應該就理解了吧,它會去這個class-path里找到jar包解析了。當然還有其他的辦法,目前我知道的這個分享給你們了,咱們一起進步!!!

參考來自:http://www.cnblogs.com/lanxuezaipiao/p/3291641.html#3306113


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM