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 外面獨立一個資料夾

好物一枚!!! ^__^

參考資料

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

    這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料