2011-03-10 232 views
2

考慮從主方法啓動的Java程序,它需要tools.jar中的某些內容。在這種情況下,用於連接到JMX服務的一些實用程序代碼。我們有什麼選擇,只能將其包裝在使用-cp管理類路徑的shell腳本中嗎?我們寧願使用MANIFEST.MF類路徑。tools.jar依賴關係

回答

1

http://java.sun.com/developer/Books/javaprogramming/JAR/basics/manifest.html

the URLs in the Class-Path header are given relative to the URL of the JAR file of the applet or application. 

我不相信你有一個有關使用shell包裝得到您的類路徑中的tools.jar選擇。除非您在內部編寫一些自定義類加載器以允許您查找外部罐。

+1

這個想法是,我放棄使用Class-Path清單,只是建立一個長的-cp參數,包括$ JAVA_HOME/lib/tools.jar。 – bmargulies 2011-03-10 22:37:19

+0

我以爲我確認你的想法和懷疑。建立一個長期的 -cp參數似乎是做你想做的唯一好方法。你也可以創建一個java -jar啓動器,使用系統管理器產生另一個「java -cp <許多類去這裏> some.package.Main」。這將允許您跳過腳本,但會犧牲產卵或分叉新流程。 – 2011-03-10 23:32:45

+0

是的,當然,對不起。 – bmargulies 2011-03-11 00:19:26

0

如果從依賴關係jar中包含類是一個選項,我會創建一個「Runnable JAR文件」。基本上你從中提取類,並將它們放在JAR中的自己的類中。這消除了對包裝腳本的需求。

做,在Eclipse中,選擇您的項目,File - >Export - >Java - >Runnable JAR file;該選項將要求您至少執行了一次主類以知道在實際運行生成的JAR時要運行的配置文件。