2010-04-07 62 views
2

我生成的.class通過下面的命令文件:如何在清單文件中指定依賴關係,然後將其包含到我的.jar文件中?

javac -cp \directoryName\external.jar myPackageDirectory\First.java myPackageDirectory\Second.java 

我需要使用-cp編譯和「外部」庫(external.jar)的.jar文件的名稱時可以使用這個庫從我的代碼。


使用我的.class文件我已經產生下列方式我.jar文件:

jar cfm app.jar manifest.txt myPackageDirectory\*.class 

manifest.txt只包含一個行:

Main-Class: myPackageName.First 

我的問題是我不確定我能否在其他計算機上運行我的.jar文件。我這樣想是因爲在編譯期間,我指定了外部庫的.jar文件的位置。因此,我的.class文件(包含在.jar文件中)將嘗試在特定目錄中查找外部庫的.jar文件,並且不保證外部庫的.jar文件將位於同一目錄中因爲我的電腦上。


聽說上面的問題可以通過清單文件,我 包括在我自己的罐子的

使用來解決,這將 列表依賴地點

但我不明白它是如何工作的。我需要在編譯階段指定「external.jar」的位置(否則編譯器會抱怨)。

回答

2

首先:您似乎沒有編譯一個名爲MainClass的類,並且您的所有.java文件似乎都位於一個包中,因此我認爲MainClass只是一個佔位符,並且您實際使用的是正確的類名。

您需要specify a Class-Path header提及您的外部.jar到您的manifest.txt並將jar文件與您的jar一起傳遞。您需要在編譯時指定-cp來執行另外的

+0

對,我不編譯'MainClass'(它只是一個佔位符,我在我的文章中修改過)。關於第二部分,我如何將我的清單文件包含到我的.jar文件中? – Roman 2010-04-07 12:01:50

+0

您已經包含一個清單文件(您的輸入稱爲「manifest.txt」)。你只需要修改它的輸入。其餘的內容應在我鏈接到的教程中解釋。 – 2010-04-07 12:03:20

+0

我的意思是,我這樣做的方式會自動將我的清單文件包含到我的jar中,對嗎? – Roman 2010-04-07 12:03:23

0

除了Joachim Sauer(非常正確)所說的之外,還有一種方法可以將你的依賴jar包裝到你自己的代碼中。完成此操作的程序會創建一個超級主類並操作類路徑以在您的結果jar中查找相關的jar。

幾個程序可以做到這一點;其中之一叫做OneJar

相關問題