最近看到有不少朋友問java打包生成jar文件的問題,這種做法的好處就是可以直接運行,甚至可以在windows環境下就可以運行,不需要繁瑣的編譯。我認為方法大致有二:
?? 第一種方法,假設d:\test目錄下面有兩個類A、B,其中A是主類。
1、用文本編輯器編寫一個清單文件:Mymoon.mf。內容如下:
?? Manifest-Version: 1.0
?? Main-Class: A
?? Created-By:
?? 各行中間要有空格。保存到d:\test下
2、生成jar文件。
?? D:\test\jar cfm w.jar Mymoon.mf A.class B.class
?? 完成以后就會生成w.jar的文件了,可以放到任何地方運行。
第二種方法,使用apache-ant編譯。
Apache-ant作為一個java的生成工具,肯定有不少朋友已經用到了,ant作為最初的tomcat的組件,作為用于生成開放源代碼java項目的事實上的標準,已經獲得了廣泛歡迎,他的功能很多,主要是通過build.xml文件來實現,關于ant及xml的用法,大家可以參考資料,我在這里只介紹生成jar文件的方法。
首先,在c:\目錄下建立一個包,名為src,里面可以放入一個簡單的helloworld.java的程序。這時候不需要編譯文件。
第二,在c盤下建立一個xml文件build,在build中輸入以下內容:
<?xml version="1.0"?>
<project default="dist" name="helloworld">
<description>a simple java project</description>
<property name="srcDir" location="src"/>
<property name="buildDir" location="build"/>
<property name="distDir" location="dist"/>
<target name="init">
<tstamp/>
<mkdir dir="${buildDir}"/>
<mkdir dir="${distDir}"/>
</target>
<target name="compile" depends="init">
<javac srcdir="${srcDir}" destdir="${buildDir}"/>
</target>
<target name="dist" depends="compile">
<jar destfile="${distDir}/package-${DSTAMP}.jar" basedir="${buildDir}">
<manifest>
<attribute name="Build-By" value="${user.name}"/>
<attribute name="Main-class" value="src.helloworld"/>
</manifest>
</jar>
<jar destfile="${distDir}/package-src-${DSTAMP}.jar" basedir="${srcDir}"/>
</target>
<target name="clean">
<delete dir="${buildDir}"/>
<delete dir="${distDir}"/>
</target>
</project>
?? 關于這個xml文件的詳細工作方法,我就不介紹,大家可以參看文檔。
?? 第三、在c提示符下輸入,ant build.xml,如果一切順利,系統會自動生成兩個文件夾,dist和build,其中build中保存的是編譯好的helloworld.class文件,dist中包含兩個文件,其中一個是helloworld源文件,另一個就是我們需要的jar文件了,接著我們就可以在dist目錄下運行這個文件了。例如本例:java –jar package-20060315.jar。
?? 以上就是生成.jar文件的方法,我覺得第二種更好,更符合工程上的規范。