从Ant构建文件运行Java程序

时间:2012-07-18 15:29:25

标签: java ant

所以我写了一个ant build.xml文件,我从两个Java程序中获取类文件,一个扩展另一个,将它们打包成两个独立的jar文件,然后启动它们。

<java classname="Main">
             <classpath>
                  <pathelement location="${mainDir}"/>
                  <pathelement path="${Main-Class}"/>
             </classpath>
       </java>

每当我调用ant时,都会说“Main”无法找到。如果需要,我可以发布build.xml文件的其余部分,但实际上这只是我感到困惑的部分。我很确定我有正确的类名,但我最大的问题是找出位置和路径的内容。现在我只有虚拟变量。

编辑:这是整个文件。

<?xml version="1.0"?>
<project default="dist" name="webscarab">
<description>Class</description>
<property name="ClassFiles" location="..\Simple\trunk\dev\Class\bin\" />
<property name="mainClassFiles" location="..\Simple\trunk\dev\main\build\" />
<property name="buildDir" location=".\build" />
<property name="distDir" location=".\dist" />
<property name="mainDir" location="..\Simple\trunk\dev\webscarab\src\" />
<target name="init">
        <tstamp/>
        <mkdir dir="${buildDir}"/>
        <mkdir dir="${distDir}"/>
</target>
<target name="dist" depends="init">
    <jar destfile="${distDir}/package${DSTAMP}.jar" basedir="${ ClassFiles}"/>
    <jar destfile="${distDir}/package-web-${DSTAMP}.jar" basedir="${mainClassFiles}"/>
    <java classname="Main">
     <classpath>
       <pathelement location="${mainDir}"/>
       <pathelement path="${Main-Class}"/>
     </classpath>
   </java>
</target>
</project>
编辑2:我应该提到一切已经编译好了,我有所有.class文件。这不是我需要在Ant文件中做的事情。

4 个答案:

答案 0 :(得分:1)

您可能需要更改元素以指向正在创建的Jars,此时类路径似乎指向源,这不会起作用,因为类路径需要已编译的.class文件或jar包含它们。

作为一种风格问题,我也会将任务移动到一个单独的“运行”或“运行应用”目标,该目标取决于目标。

答案 1 :(得分:1)

有关“无法找到类”的错误消息可能是由于类路径不正确。

类路径应该授予对应用程序所需的所有类和资源文件的访问权限。它由一组目录和jar文件组成。 location将表示单个目录或路径,而path将表示多个,由;:分隔,具体取决于您的平台。

在您的情况下,在我看来,您希望您的类路径包含${pegaFuzzClassFiles}${webScarabClassFiles}作为目录,或${distDir}/package-pega-${DSTAMP}.jar${distDir}/package-web-${DSTAMP}.jar作为jar文件。您可以使用单个<pathelement path="…"/>元素执行此操作,但我建议使用多个<pathelement location="…"/>,因为我认为这更加清晰。

您还应该确保应用程序使用的任何第三方库也可以在该路径上使用。您可以将一个或多个<fileset>嵌套到<classpath>中,每个jar都会描述给定目录中的所有{{1}}个文件。

答案 2 :(得分:0)

您需要Javac任务来编译您的代码,之后您可以运行已编译的类。有关Javac任务的更多信息,请访问http://ant.apache.org/manual/Tasks/javac.html

第二条建议: 无论你是否使用,强烈建议使用unix斜杠'/' 窗户与否。更改mainDir,distDir和buildDir属性位置。

答案 3 :(得分:0)

我没有大量的蚂蚁经验,但您可能需要明确告诉java要运行哪个jar文件。

<java jar="path-to-jar-file" classname="org.owasp.webscarab.Main">
相关问题