从Ant构建文件运行Java程序

从Ant构建文件运行Java程序,java,ant,Java,Ant,因此,我编写了一个ant build.xml文件,其中我从两个Java程序中获取类文件,一个扩展另一个,将它们打包成两个单独的jar文件,然后启动它们 <java classname="Main"> <classpath> <pathelement location="${mainDir}"/> <pathelement path="${Main-Class

因此,我编写了一个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文件中执行的操作。

您可能需要更改元素以指向正在创建的JAR,此时类路径将显示为指向源,这将无法工作,因为类路径需要编译的.class文件或包含它们的JAR


作为一种风格,我还会将任务移动到一个独立的“运行”或“运行应用程序”目标中,这取决于dist目标。

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

类路径应该授予对应用程序所需的所有类和资源文件的访问权。它由一组目录和jar文件组成<代码>位置将表示单个目录或路径,而
路径
将表示多个目录或路径,由
分隔
取决于您的平台

在你的例子中,我觉得你想要你的类路径要么由
${pegaFuzzClassFiles}
${webcarabclassfiles}
作为目录组成,要么由
${distDir}/package-pega-${DSTAMP}.jar
${distDir}/package-web-${DSTAMP}.jar
作为jar文件组成。你可以使用一个单一的<代码> <代码>元素,但是我建议多个<代码> <代码>,因为我认为这更清楚。


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

您需要使用Javac任务来编译代码,然后可以运行编译后的类。有关Javac任务的更多信息,请访问

第二条建议: 强烈建议使用unix斜杠“/”,无论您是否在
不管有没有窗户。更改mainDir、distDir和buildDir属性位置。

我对ant没有太多经验,但您可能需要明确地告诉java要运行哪个jar文件

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


是的,我会把它们分开,我只是想先让它工作起来。所以我会把jar文件所在的目录放在location下面,然后把什么放在path下面?或者我还是搞混了。像这样的东西应该会起作用。这正是我想要的。非常感谢!