我用idea工具將自己開發java程序打成一個可執行的jar包,當然用eclipse或者直接用jar命令行都無所謂,本質都是將程序歸檔到一個壓縮包,並附帶一個說明清單文件。
打jar的操作其實很簡單,網上很多資料,即使出錯工具也都會有提示,而執行打包好的jar就很容易出現一些小問題,這些小問題往往就是jar包中清單文件書寫一些小細節引起的。
比如我在標題提到的執行jar包拋出 java.lang.NoClassDefFoundError 異常,找不到某某包下的類,這時候不用看,就是清單文件中的classpath書寫的問題:
classpath有如下容易忽略的問題:
(1) 不能有空行和空格的地方 第一行不可以是空行( 第一行的行前不可以有空行),行與行之間不能有空行,第行的行尾不可以有空格
(2) 一定要有空行的地方 最后一行得是空行(在輸完你的內容后加一個回車就OK)
(3) 一定有空格的地方
等等。這些其實用第三方工具(非jdk自帶)都不會有問題,而本人則遇到一個問題,是想在這里特別說明的,本人參照網上帖子,用idea打jar包,第三方的jar通通放入lib文件夾中,這時候,清單文件的classpath所對應的jar包就必須加上“lib\”前綴,而問題就在這里,他寫成lib\xxx-xx.jar執行jar包時候就出現了標題中java.lang.NoClassDefFoundError異常。本人反復和對打包清單文件,懟了一晚上才爬出坑,需要用"/"符號 ,所classpath應該是lib/xxx-xx.jar