ant的jar打包的target

ant的jar打包的target

Java代码 复制代码
  1. <project name="client" default="compile" basedir=".">   
  2.     <property name="product" value="client"/>   
  3.     <property name="version" value="1.0"/>   
  4.     <property name="src.dir" value="${basedir}/src"/>   
  5.     <property name="build.dir" value="${basedir}/build"/>   
  6.     <property name="lib.dir" value="${basedir}/lib"/>   
  7.     <property name="jar.file" value="${product}.${version}.jar"/>   
  8.   
  9.     <path id="classpath">   
  10.         <fileset dir="${lib.dir}">   
  11.             <include name="**/*.jar"/>   
  12.         </fileset>   
  13.     </path>   
  14.   
  15.     <target name="clean">   
  16.         <echo>clean build dir</echo>   
  17.         <delete dir="${build.dir}" quiet="true"/>   
  18.         <delete file="${lib.dir}/${jar.file}" quiet="true"/>   
  19.     </target>   
  20.   
  21.     <target name="init" depends="clean">   
  22.         <mkdir dir="${build.dir}"/>   
  23.     </target>   
  24.   
  25.     <target name="compile" depends="init">   
  26.         <echo>compile the source</echo>   
  27.         <javac srcdir="${src.dir}" destdir="${build.dir}">   
  28.             <include name="**/*.java"/>   
  29.             <classpath refid="classpath"/>   
  30.         </javac>   
  31.     </target>   
  32.   
  33.     <target name="jar" depends="compile">   
  34.         <jar destfile="${lib.dir}/${jar.file}">   
  35.             <fileset dir="${build.dir}">   
  36.                 <include name="**/*.class"/>   
  37.             </fileset>   
  38.             <manifest>   
  39.                 <attribute name="Main-Class" value="Demo"/>   
  40.                 <attribute name="Class-Path" value="axis.jar commons-discovery-0.2.jar commons-logging.jar jaxrpc.jar saaj.jar wsdl4j-1.5.1.jar"/>   
  41.             </manifest>   
  42.         </jar>   
  43.     </target>   
  44.   
  45.     <target name="run" depends="jar">   
  46.         <java jar="${lib.dir}/${jar.file}" fork="yes">   
  47.         </java>   
  48.     </target>   
  49. </project>  
<project name="client" default="compile" basedir=".">
	<property name="product" value="client"/>
	<property name="version" value="1.0"/>
	<property name="src.dir" value="${basedir}/src"/>
	<property name="build.dir" value="${basedir}/build"/>
	<property name="lib.dir" value="${basedir}/lib"/>
	<property name="jar.file" value="${product}.${version}.jar"/>

	<path id="classpath">
		<fileset dir="${lib.dir}">
			<include name="**/*.jar"/>
		</fileset>
	</path>

	<target name="clean">
		<echo>clean build dir</echo>
		<delete dir="${build.dir}" quiet="true"/>
		<delete file="${lib.dir}/${jar.file}" quiet="true"/>
	</target>

	<target name="init" depends="clean">
		<mkdir dir="${build.dir}"/>
	</target>

	<target name="compile" depends="init">
		<echo>compile the source</echo>
		<javac srcdir="${src.dir}" destdir="${build.dir}">
			<include name="**/*.java"/>
			<classpath refid="classpath"/>
		</javac>
	</target>

	<target name="jar" depends="compile">
		<jar destfile="${lib.dir}/${jar.file}">
			<fileset dir="${build.dir}">
				<include name="**/*.class"/>
			</fileset>
			<manifest>
				<attribute name="Main-Class" value="Demo"/>
				<attribute name="Class-Path" value="axis.jar commons-discovery-0.2.jar commons-logging.jar jaxrpc.jar saaj.jar wsdl4j-1.5.1.jar"/>
			</manifest>
		</jar>
	</target>

	<target name="run" depends="jar">
		<java jar="${lib.dir}/${jar.file}" fork="yes">
		</java>
	</target>
</project>

当用java -jar yourJarExe.jar来运行一个经过打包的应用程序的时候,会发现如何设置-classpath参数应用程序都找不到相应的第三方类,报ClassNotFound错误。实际上这是由于当使用-jar参数运行的时候,java VM会屏蔽所有的外部classpath,而只以本yourJarExe.jar的内部class作为类的寻找范围,因此当使用-jar执行可执行Jar包时,JVM将Jar包所在目录设置为codebase目录,所有的class搜索都在这个目录下开始.所以如果使用了其他第三方的jar包,一个比较可以接受的可配置方案,就是利用jar包的Manifest扩展机制.
步骤如下:
1.将需要的第三方的jar包,复制在同可执行jar所在的目录或某个子目录下. 比如:jar 包在 /usrhome/yourJarExe.jar 那么你可以把所有jar包复制到/usrhome目录下或/usrhome/lib 等类似的子目录下.
2.修改Manifest 文件
在Manifest.mf文件里加入如下行
Class-Path:classes12.jar lib/thirdlib.jar
Class-Path 是可执行jar包运行依赖的关键词
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值