1

所以我写了一个 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

4 回答 4

1

您可能需要更改元素以指向正在创建的罐子,现在类路径似乎指向源,这是行不通的,因为类路径需要编译的 .class 文件或包含它们的罐子.

出于风格的考虑,我还会将任务移动到一个单独的“运行”或“运行应用程序”目标中,该目标取决于 dist 目标。

于 2012-07-18T15:33:45.833 回答
1

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

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

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

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

于 2012-07-18T15:37:10.280 回答
0

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

<java jar="path-to-jar-file" classname="org.owasp.webscarab.Main">
于 2012-07-18T15:46:18.437 回答
0

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

第二条建议: 无论您是否在 Windows 上,强烈建议使用 unix 斜杠“/”。更改您的 mainDir、distDir 和 buildDir 属性位置。

于 2012-07-18T15:40:44.057 回答