2011-08-12 26 views
0

我在eclipse中開發了一個需要java3d的應用程序。我有java3d的罐子,但我不知道如何將它們放入我的最終jar,以便我的應用程序可以引用所需的類。我在Mac上,只是使用命令行的罐子,這是我的腳本:用我的應用程序封裝java jar庫

cd /Users/landonsilla/Sites/3dviewer/bin 
jar -cvf CyarkCloudViewerPro.jar pointCloudTest/*.class pointCloudTest/icons/*.png 

這很簡單,它只是需要一些類文件和一些圖像,並將它們放入罐子。我如何將java3d罐放在那裏?

最終目標是通過jnlp將其發送到我的網站上。我的應用程序有效,我實現的jnlp傳遞機制工作正常。但是,當我的應用程序嘗試執行java3d的東西時崩潰。

這似乎是一個簡單而常見的要求,我只是無法弄清楚答案。

+0

請參閱http://stackoverflow.com/questions/81260/java-easiest-way-to-merge-a-release-into-one-jar-file或http://stackoverflow.com/questions/183292/ classpath-including-jar-within-a-jar –

回答

1

您只需將jar文件添加到主jar文件中,然後在MANIFEST.MF文件中通告這些庫。在MANIFEST.MF的例子:

Manifest-Version: 1.0 
Main-Class: fi.ropecon.contv.client.ConTVClient 
Created-By: "Jari Juslin <[email protected]>" 
Class-Path: lib/j2ee.jar lib/jbossall-client.jar lib/log4j.jar lib/jnp-client.jar 

「主類」是被稱爲當你開始使用Java的罐子命令程序啓動程序的類。類路徑是普通的Java類路徑,但相對於主jar歸檔的根。

+0

好的,你能解釋一下如何「將jar文件添加到主jar」嗎?我知道一個jar只是一個zip文件,所以我解壓縮後,創建一個名爲lib的文件夾,將jar放入那裏,然後重新解壓縮它? – Landon

+0

是的,這有效。通常人們使用像「螞蟻」這樣的構建工具來做到這一點。它們允許您列出包含哪些目錄和文件以及在哪裏。 – Zds

+0

我想你也可以在類的後面列出你的「jar」命令的命令行中包含的jar。 jar工具在* nix中的作用類似於「tar」,它只是一個奇特的壓縮工具。 – Zds