最近看到有不少朋友问java打包生成jar文件的问题,这种做法的好处就是可以直接运行,甚至可以在windows环境下就可以运行,不需要繁琐的编译。我认为方法大致有二:
第一种方法,假设d:\test目录下面有两个类A、B,其中A是主类。
1、用文本编辑器编写一个清单文件:Mymoon.mf。内容如下:
Manifest-Version: 1.0
Main-Class: A
Created-By: 1.2.2(Sun Microsystems Inc.):
各行中间要有空格。保存到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文件的方法,我觉得第二种更好,更符合工程上的规范。