[英]Ant gets stuck while building runnable jar
又是我。 我一直在嘗試使用ant腳本將Java項目創建到可運行的jar中。 這是我的build.xml
<project name="simple-app" basedir="." default="main">
<property name="src.dir" value="src" />
<property name="build.dir" value="build" />
<property name="classes.dir" value="${build.dir}/classes" />
<property name="jar.dir" value="${build.dir}/jar" />
<property name="lib.dir" value="lib" />
<property name="main-class" value="app.App" />
<path id="classpath">
<fileset dir="${lib.dir}">
<include name="*.jar" />
</fileset>
<dirset dir="${build.dir}">
<include name="classes"/>
</dirset>
</path>
<target name="clean">
<delete dir="${build.dir}" />
</target>
<target name="compile">
<mkdir dir="${classes.dir}"/>
<javac source="1.7" target="1.7" includeantruntime="false" srcdir="${src.dir}" destdir="${classes.dir}" classpathref="classpath" />
</target>
<target name="jar" depends="compile">
<mkdir dir="${jar.dir}" />
<jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}" includes="*.class">
<manifest>
<attribute name="Main-Class" value="${main-class}" />
</manifest>
</jar>
</target>
<target name="run" depends="jar">
<java classname="${main-class}">
<classpath>
<path refid="classpath" />
<path location="${jar.dir}/${ant.project.name}.jar" />
</classpath>
</java>
</target>
<target name="main" depends="clean,run"/>
</project>
一切順利,但是當它“運行”時會卡住。 終端說運行:什么也沒有發生。 等了30分鍾,什么都沒有。 我嘗試了在互聯網上找到的許多其他選項,但是這些選項導致了同樣的滯后,或者拋出了ClassNotFoundException。
我真的不知道該怎么辦。 當我使用Eclipse制作文件時,一切正常。 有人可以幫助我嗎? 這可能是完全愚蠢的,但我只是看不到。 非常感謝你。
要修復ClassNotFoundException異常,您需要在jar的清單中包含類路徑。 manifestclasspath任務非常有用:
<target name="jar" depends="compile">
<mkdir dir="${jar.dir}" />
<manifestclasspath property="jar-classpath" jarfile="${jar.dir}/${ant.project.name}.jar">
<classpath refid="classpath" />
</manifestclasspath>
<jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}" includes="*.class">
<manifest>
<attribute name="Main-Class" value="${main-class}" />
<attribute name="Class-Path" value="${jar-classpath}" />
</manifest>
</jar>
</target>
這使您可以按以下方式調用jar:
<java jar="${jar.dir}/${ant.project.name}.jar" fork="true"/>
或從命令行:
java -jar /path/to/myproject.jar
最后,這可能無法解釋您的構建為何掛起。...代碼是否可能進入等待狀態?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.