2011-08-11 17 views
2

我正在爲控制檯應用程序創建一個小接口,並且正在執行控制檯應用程序,然後通過命令行運行命令。如何通過Java Web向外部JAR提供類路徑開始

我的問題是我正在執行的JAR需要提供一個JAR庫的路徑。不過,我不知道如何正確傳遞這些信息。根據我在JNLP File Syntax中找到的信息,我應該在JNLP文件中將所有外部JAR添加到JAR路徑中。

這個文件看起來是這樣的:

<resources> 
    <j2se version="1.5+"/> 
    <jar href="uToolGUI.jar" main="true"/> 
    <jar href="uTool.jar"/> 
    <jar href="jpcap.jar"/> 
</resources> 

我目前正在執行的路線是這樣的:

java.exe -cp lib\jpcap.jar;. -jar D:\jarCreateLib\uTool.jar gen 

所以我想這個問題歸結爲 - 我怎麼提到我想庫的方式使Web Start可以讓我這樣做。

這在通過Eclipse執行時就像一種魅力。如果我必須通過java -jar...運行它,我必須添加-Djnlp.java.library.path=lib然而,只要我嘗試通過Java Web Start執行它,這沒有任何區別。

在此先感謝您的任何答覆和答案。

+0

「manifest」是什麼意思? – trashgod

+0

除了標準文件和文件簽名以外,還有這一行 主要類:uTool.View.MainViewFrame –

回答

2

命令java -jar …使用清單中的Class-Path,而不是-cp選項中指定的路徑。至於建議here,你需要一個清單條目,如本:

 
Class-Path: lib/uToolGUI.jar lib/uTool.jar lib/jpcap.jar 

JNLP File Syntax指出,在JNLP文件中main-class屬性可以省略,如果在JNLP文件中指定的第一個JAR文件可以從被發現清單條目在JAR文件中的Main-Class

1

的JNLP段假定的罐子在相同的(未命名)目錄 - 代碼 - 基,而命令行調用指向一個在lib目錄,&另一個在jarCreateLib

我強烈建議你用JaNeLA檢查JNLP。它檢查的一件事是,在JNLP中聲明的資源相對於指定的代碼庫是可用的。

+0

+1路徑差異可能很關鍵。將清單中的輔助JAR指定爲或「Class-Path」條目是否合適? – trashgod

+1

@trashgod是的。 'Class-Path'較新(Applets和JWS AFAIR爲1.5),但從此開始工作。 JaNeLA僅使用JNLP信息,因此將錯過清單中指定的所有Jars。 OTOH在「資源」部分中聲明Jars具有優勢 - 可以控制下載,以便進行急切/懶惰,部件規範,將分檔歸入擴展等的能力。 –

相關問題