2015-04-22 189 views
1

我試圖通過cmd行創建JAR文件,但在編譯它時相對於使用Eclipse創建的JAR文件時遇到了問題。Eclipse JAR創建與cmd行JAR創建

要使用命令行版本,我做到以下幾點:

jar cf "myjar.jar" A.java B.java C.java 

在我從運行該命令的目錄中,只存在三個文件。

當我從Eclipse構建它時,右鍵單擊三個選定的文件。然後執行:導出 - > JAR文件 - >完成(壓縮JAR的內容)。

尺寸差異非常明顯,19 KB(cmd)對43 KB(Eclipse)。當我嘗試使用命令行創建的JAR時,我的應用程序失敗。我的猜測是,命令行創建的JAR不包括所有必需的依賴關係(三類之外)。

任何幫助我做錯了將不勝感激!

+0

jar是一個zip文件。你可以用winzip等檢查內容,看看有什麼不同。 – Sanj

+0

*當我嘗試使用命令行創建的JAR時,我的應用程序失敗。* - >創建存檔或啓動程序時出現任何錯誤消息?請提供更多信息。 – Turing85

+0

你有什麼依賴性?你的類路徑上有什麼?當你從命令行運行jar時,你會看到什麼錯誤信息?每個jar裏面有什麼(用jar tf命令查看它,或者使用像7zip這樣的zip文件查看器)? –

回答

2

JDK的工具JAR僅僅是一個ZIP壓縮然後當你嘗試:

jar cf "myjar.jar" A.java B.java C.java 

你真的要創建具有3 Java源代碼拉鍊,你是不是編譯代碼。

你必須做到:

javac *.java 
jar cf "myjar.jar" *.class 

當你使用Eclipse生成到IDE是假設你想在一個JAR編譯和打包生成的類文件。此外,還有一個MANIFEST.MF生成可以從命令行不同和Eclipse

編輯: 如果要執行與多個JAR應用程序檢查:Setting multiple jars in java classpath

+0

這似乎是正確的答案。我正在使用Apache Commons Lang API,並且我有JAR文件。有沒有辦法在javac命令中包含該依賴項?對不起,Java相當新。 – jpints14

+0

您不能在其他JAR中包含JAR,您必須使用兩個jar分發您的應用程序並配置類路徑。選中此項:http://stackoverflow.com/questions/219585/setting-multiple-jars-in-java-classpath –

+0

可以爲編譯時間和執行時間定義類路徑。你需要這兩者。這是正確的方法。 –

1

你編譯.java文件?

在構建.jar文件時,您必須包含.class文件,它們是編譯的java文件。

的信息請參見文檔上建立一個jar文件: https://docs.oracle.com/javase/tutorial/deployment/jar/build.html

Eclipse將編譯在後臺的源代碼,並在您的jar文件的編譯版本。 Eclipse還提供了一個選項,以包含使文件大小有所不同的來源。

+0

正如我在之前對Ernesto的評論中提到的那樣,需要Apache jar來構建其他3個類。我只是將.java文件放在jar中,當我調用「java -cp」時,我會包含Apache jar嗎? – jpints14