我讀過這使許多文章/解釋,花了太多時間,但一切是不是太廣泛或具體。如何將多個罐子合併爲一個?
這個問題確實只適用於我做了一個Applet。它包含一個類,並需要2個其他Jar庫。我已經將這些包括在項目中(多個項目,因爲我已經在Netbeans和Eclipse中嘗試了這一點...很容易重新創建一個類項目)。所有這一切的關鍵是我的HTML/Web項目不應該處理多個Jar或引用它們。這也不是一個複雜的applet /項目。
本來,我在Netbeans的做到了。它具有主包裝,並且在添加2個罐子之後,它們被放置在「庫」區域(「資源」文件夾)中。在構建它之後,Netbeans爲我的一個包/類創建一個Jar,然後將其他兩個庫放在它旁邊的「lib」目錄中。我希望他們在一個可分發的罐子裏。從很多事情我已經經歷看,我試圖把build.xml中的以下內容:
<target name="YourBigJar" depends="-post-jar">
<jar destfile="dist/BigJar.jar">
<zipfileset src="dist/cxapplet.jar"/>
<zipfileset src="resources/dpotapi.jar"/>
<zipfileset src="resources/dpotjni.jar"/>
</jar>
</target>
但它產生什麼。我從NetBeans - deploying all in one jar得到這個。我不知道/瞭解如何使用build.xml,所以如果出現問題(顯然)我不會感到驚訝,但是我沒有收到錯誤/警告消息。
當我在Eclipse中做到了,它有效地將他們,但是當我使用的jar在我的實際web項目,它說,它不能從其他2罐發現的類。我不明白如何解決它,但它是一個類路徑問題?在Eclipse中,我創建了一個名爲「lib」的新目錄,並將Jars放入其中。然後,我右鍵單擊項目,轉到「Java Build Path」,然後添加Jars,並在「Order and Export」選項卡下檢查它們。從我讀過的東西中,右鍵單擊項目,選擇「導出」,選擇「Jar」,取消選中「.classpath」和「.project」文件,只勾選「導出生成的類文件和資源」,然後允許它生成清單文件。就像我說的,這會生成一個Jar,但它的內容是我的包,然後是一個「lib」目錄,它具有另外兩個Jar。 Manifest在那裏,但它非常空,並沒有引用任何文件(不知道這是否重要)。當我把它放在我的網絡應用程序中時,它說applet找不到其他類。
它只是似乎很簡單 - 當分配作爲小建一個包/班,兩個外部罐......合併成一個罐子。有任何想法嗎?
UPDATE:
自從我們開始使用Maven,有人看着使用Maven插件。因此,我們結束了創建一個新的項目來容納小程序(因爲它在多個項目中使用),並在我們的pom.xml
用這個,到底:
<build>
<resources>
<resource>
<directory>${basedir}/applet</directory>
<excludes>
<exclude>codesignstore</exclude>
</excludes>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<finalName>cxapplet</finalName>
<archive>
<index>true</index>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
</archive>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
<executions>
<execution>
<id>make-my-applet-jar</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jarsigner-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<id>sign</id>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
<configuration>
<keystore>${basedir}/applet/codesignstore</keystore>
<alias>codesigncert</alias>
<storepass>HIDDEN</storepass>
<keypass>HIDDEN</keypass>
</configuration>
</plugin>
</plugins>
</build>
而且因爲它允許我們使用很高興我們代碼簽名證書也可以自動簽名。
*「所有這一切的一點是,我的HTML/Web項目中不應該有應付不止一個瓶」 *這是容易做到這使瀏覽器可以處理它。 *「任何想法?」*以通常的方式部署Jars(與當前策略相比具有優勢)並節省您的時間。 –
它更好地使一個罐子的依賴關係到另一個。許多罐子製作工具使您的工作變得輕鬆。 –
@joeyrohan我不確定你的意思,但這就是爲什麼我試圖使用Netbeans和Eclipse的構建工具,我認爲它會這樣做。 – Ian