【发布时间】:2013-12-17 20:51:40
【问题描述】:
又是我。 我一直在尝试使用 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 制作文件时,一切正常。任何人都可以帮助我吗?这可能是完全愚蠢的事情,但我只是不明白。 非常感谢。
【问题讨论】:
-
您是否尝试手动运行 .jar?有用吗?
-
你是怎么做到的?抱歉,已经研究了 3-4 个小时,所以有点慢。
-
您的 jar 文件是“jar”目标的结果。只需尝试从命令行运行它。 docs.oracle.com/javase/tutorial/deployment/jar/run.html 请注意在类路径中包含所有依赖项。
-
+1 表示 又是我 :)
-
说:错误:无法找到或加载主类 app.App 似乎我误解了运行目标(来自link),我忘记创建“欢迎短语”所以程序实际上运行,这就是为什么它什么都不做(等待输入)。但是 .jar 应该可以自行运行。我想我必须使用清单而不是目标运行,对吧?