2015-04-12 71 views
-1

我剛寫了Java控制檯項目,我將其打包爲jar文件。我GOOGLE了很多,發現不同的解決方案,如(Eclipse)項目 - >新配置 - > e.t.c然後導出爲jar文件使用speciefied配置。這很好,但這不是我需要的。重複後 - 它不會工作。我試圖做同樣的提到這裏:click使用清單將項目導出爲jar文件

第二個解決方案:使用清單創建jar。那好吧,因爲我可以指定main.class的入口點。但由於可以,它不會工作;找出其他軟件包的位置。

UPD:Launcher.class看起來像這樣

package backpack.dao; 

public class Launcher{ 
    public static void main(String[] args){ 
    Backpack.start(); 
} 
} 

我的項目結構:

src/backpack/dao/Item.java 
       /Backpack.java 
       /Chromo.java 
src/backpack/main/launcher/Launcher.java 

的問題是:我應該在清單寫,而不是這個什麼:

Main-Class src/backpack/main/launcher/Launcher到使可執行jar 成功?

P.S Launcher類使用來自Backpack.java的實例 請不要降級。我是新手

謝謝

回答

0

什麼是Launcher.java的包?您是否已將包名稱包含在manifest.txt中的類名中? 請記住,當Launcher.java是包 「backpack.main.launcher」 你在manifest.txt類名是:中

Main-Class src/backpack.main.launcher.Launcher 

代替:

Main-Class src/backpack/main/launcher/Launcher 

此外,請記住這一點:

文本文件必須以換行或回車結束。

要檢查究竟是什麼不對您的jar文件中使用命令行運行它:

java -jar MyJar.jar 

這裏貼上錯誤消息輸出。

如需更多幫助,您可以檢查從Oracle這個例子:link

編輯:

我重新創建你的項目結構,我已經找到了解決方案(至少我認爲我有:) )

  1. 編譯你的代碼,並轉到編譯代碼的父目錄(帶* .class文件,這應該是「out」目錄或類似的東西 - dep從你的IDE結束)。例如:當您的項目在some/path/src/backpack/main/launcher時,請轉至src目錄。
  2. 運行命令: jar cvfe MyJar.jar backpack.main.launcher.Launcher -C . . (是的,在最後兩個點)

這與名MyJar.jar和清單文件(-e標誌)與主類backpack.main.launcher.Launcher應該創建罐子。 -C標誌包括目錄.(當前一個)的遞歸的所有* .class文件,所以從daolauncher包都包含。

  • 測試罐:java -jar MyJar.jar
  • +0

    感謝您的回答,這不是一個好的解決方案。因爲在launcher.class中我調用了其他類的方法。此課程位於其他地點。所以在通過cli創建jar之後(我收到錯誤2:'can not see backpack.dao package')。 – Reborn

    +0

    Post Updated ... – Reborn

    +0

    我對你的項目結構有點困惑: 1.什麼是Item.java,Backpack.java和Chromo.java包? 2.根據項目的結構,Launcher.java可能在'backpack.dao'包中嗎?它應該在'backpack.main.launcher'包中。你的項目是否編譯? 3.爲什麼你需要在單獨的目錄中插入Launcher.java? – baza92