Export Excutable Jar / Runnable Jar
用比較舊版本的 Eclipse 匯出 JAR 的時候會出現 JAR: Could not find the main class. 今天把做好的 swing 專案匯出成 JAR,在桌面點兩下什麼事情都沒發生 … 遇到問題最害怕的是什麼錯誤訊息都沒有,該從何查起 …
在 JAR: Could not find the main class. 中有提到,在 cmd 下輸入 java -jar xxxx.jar 就可以顯示錯誤訊息
C:\Documents and Settings\user\桌面>java -jar xpath.jar Exception in thread "main" java.lang.NoClassDefFoundError: com/gargoylesoftware/htmlunit/FailingHttpStatusCodeException Caused by: java.lang.ClassNotFoundException: com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) Could not find the main class: xpath.tree.Xpath. Program will exit.
這時候想起之前是用 Fat Jar 搞定的,去下載了 fat jar 的 lib 之後,放入 eclipse plugin 內,成功的匯出了一個 fatjar.jar,點兩下,確定可以執行 ~ 過不久即發現 … 原來 Eclipse 3.4 以上就已經有包含 fat jar 了,在要匯出的專案上按右鍵 -> Export -> Runnable JAR file,在 library handling 的部分,可以挑選自己想要的方式
- Extract required libraries into generated JAR
把所有的 import JAR 都拆開來,包含在 JAR 的各個目錄中,ex. net/org/xxx.class - Package required libraries into generated JAR
把所有的 import JAR 都包在 JAR 的根目錄下 - Copy required libraries into a sub-folder next to the generated JAR
把所有 import JAR 放在 JAR 外面獨立一個資料夾
好物一枚!!! ^__^
參考資料
- JAR: Could not find the main class. @ 蛙齋
https://noter.tw/2485/jar-could-not-find-the-main-class/