2012-04-09 26 views
1

我已经找到了关于如何设置类路径的示例,以便可以执行Java程序或包含外部罐子,但不能同时包含这两个。我试图在一个文件中合并多个示例失败。如何在ant文件中设置classpath以执行Java程序并包含外部jar?

我的.java源文件位于src目录下,我要执行的文件是src/TEDI.java,类文件正确放入编译目录,并且所有的jar文件都位于目录jung2-2_0_1 。我可以让我的程序编译,但不执行,使用下面的蚂蚁文件:

<?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> 

当我运行蚂蚁,它不干净,创建和编译的目标就好了,然后当它得到执行它说:Could not find build/TEDI.class. Make sure you have it in your classpath

无论如何,我希望有人能告诉我我在做什么错在path部分。在阅读关于如何创建一个执行文件的蚂蚁目标的例子之后,我添加了pathelement位,但它根本没有帮助。有很多的例子,他们中的很多人做不同的事情来实现同样的事情(虽然没有做我正在做的事情),所以我无法弄清楚我正在尝试哪种方式是正确的去做。任何帮助或想法将不胜感激。

编辑:根据Sandro的回答将<pathelement location="${build}"/>更改为<pathelement location="${output}"/>,但它根本不会更改错误消息。

回答

1

java任务期望Java类名称,而不是类文件的路径。 所以,你应该使用

<java classname="TEDI"> 

代替

<java classname="${output}/TEDI.class"> 
+0

太棒了,这样做,非常感谢! – Maltiriel 2012-04-09 20:11:52

0

由于您想要执行的类似乎在${output}中,因此您必须在类路径中包含${output}

尝试将<pathelement location="${output}"/>添加到您的路径中。

+0

我已经得到了在那里现在,'path'段里面,如果你看一下。我把它放在了错误的地方吗? – Maltiriel 2012-04-09 18:39:27

+0

对不起,我在我的答案中犯了一个错误,我应该添加'',你目前包含'$ {build}'。 – Sandro 2012-04-09 18:47:42

+0

你是如此正确...我试着改变它输出,但它仍然给我完全相同的错误信息。我不明白为什么它看起来像第一次工作(它给了正确的路径,构建/ TEDI.class)。 – Maltiriel 2012-04-09 19:04:03

相关问题