JAVA把引用的jar合併到最終打的jar包中(針對的是非web項目)

ps:這個已經在別的地方寫過了,發佈在此處進行整理下,方便自己查看。

正常情況下,用netbeans開發,會添加默認的jdk也會引入jdk中一些沒有的包,比如數據庫連接的jdbc的包,項目部署的時候,往往需要生成一個jar包,在帶一個引入jar的文件夾,有時候,還會因爲路徑問題,反覆改,或者版本問題無法運行,所以打成一個包,很方便,步驟如下:

1.左上角切換項目-文件,點擊構建,然後在build.xml裏面</project>前面添加如下內容(可以什麼都不用改):

<target name="package-for-store" depends="jar"> 
<!-- Change the value of this property to be the name of your JAR, minus the .jar extension. It should not have spaces. <property name="store.jar.name" value="MyJarName"/> --> 
<property name="store.jar.name" value="test"/> <!-- value裏面的是最終生成的項目名稱,可改可不改 --> 
<property name="store.dir" value="store"/> 
<property name="store.jar" value="${store.dir}/${store.jar.name}.jar"/> 
<echo message="Packaging ${application.title} into a single JAR at ${store.jar}"/> 
<delete dir="${store.dir}"/> 
<mkdir dir="${store.dir}"/> 
<jar destfile="${store.dir}/temp_final.jar" filesetmanifest="skip"> 
<zipgroupfileset dir="dist" includes="*.jar"/> 
<zipgroupfileset dir="dist/lib" includes="*.jar"/> 
<manifest> <attribute name="Main-Class" value="${main.class}"/> 
</manifest> 
</jar> 
<zip destfile="${store.jar}"> 
<zipfileset src="${store.dir}/temp_final.jar" excludes="META-INF/*.SF, META-INF/*.DSA, META-INF/*.RSA"/> 
</zip> 
<delete file="${store.dir}/temp_final.jar"/> 
</target>

2.然後在build.xml上面點擊右鍵-運行目標-其他目標,然後選擇package-for-store。

3.用dist裏面的jar包中的文件的MANIFEST.MF替換掉store裏面的jar包中的同名文件,當然要用到解壓工具。

4.store裏面的jar文件,就是我們需要的jar的包,只需要把這個文件和對應的jdk拷貝過去,就可以直接運行。

5.在放一個MANIFEST.MF文件,假如以上超過困難,可以研究下規律。


Manifest-Version: 1.0
JavaFX-Version: 2.2
implementation-vendor: xxxx
implementation-title: test
implementation-version: 1.0
JavaFX-Application-Class: fmcake.Fmcake
JavaFX-Class-Path: lib/jtds-1.3.1.jar
permissions: sandbox
Created-By: JavaFX Packager
Main-Class: com/javafx/main/Main
codebase: *


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章