我找到了关于如何设置类路径以便可以执行Java程序或包含外部jar的示例,但不是两者都有。我尝试在一个文件中组合多个示例失败了。
我的源.java文件位于src目录中,我要执行的文件是src / TEDI.java,类文件正确放入构建目录,所有我的jar都在jung2-2_0_1目录中。我可以使用以下ant文件来编译程序,但不能执行:
<?xml version="1.0"?>
<project name="TEDI" basedir="." default="execute">
<property name="src" value="src"/>
<property name="output" value="build"/>
<property name="lib" value="jung2-2_0_1"/>
<target name="execute" depends="compile">
<echo>
Executing TEDI.
</echo>
<java classname="${output}/TEDI.class">
<classpath refid="java"/>
</java>
</target>
<target name="compile" depends="create">
<echo>
Compiling source files.
</echo>
<javac destdir="${output}">
<src path="${src}"/>
<classpath refid="java"/>
</javac>
</target>
<target name="clean">
<echo>
Deleting old class files.
</echo>
<delete dir="${output}"/>
</target>
<target name="create" depends="clean">
<echo>
Creating output directory.
</echo>
<mkdir dir="${output}"/>
</target>
<path id="java">
<pathelement location="${output}"/>
<fileset dir="${lib}">
<include name="*.jar"/>
</fileset>
</path>
</project>
当我运行ant时,它会很好地执行clean,create和compile目标,然后当它执行时会显示:Could not find build/TEDI.class. Make sure you have it in your classpath
无论如何,我希望有人能在path
部分告诉我我做错了什么。在阅读了一个关于如何创建执行文件的目标的示例之后,我添加了pathelement
位,但它根本没有帮助。有大量的例子,其中很多都是以不同的方式做同样的事情(虽然没有人做我正在尝试做的事情),所以我无法弄清楚我正在尝试的方法是正确的去做。任何帮助或想法将不胜感激。
修改:根据Sandro的回答将<pathelement location="${build}"/>
更改为<pathelement location="${output}"/>
,但它根本不会更改错误消息。
答案 0 :(得分:1)
java
任务需要Java类名,而不是类文件的路径。
所以你应该使用
<java classname="TEDI">
而不是
<java classname="${output}/TEDI.class">
答案 1 :(得分:0)
由于您要执行的类似乎位于${output}
,因此您必须在类路径中包含${output}
。
尝试在您的路径中添加<pathelement location="${output}"/>
。