So I wrote an ant build.xml file where I take the class files from two Java programs, one that extends the other, package them up into two separate jar files, and then, launches them.
<java classname="Main">
<classpath>
<pathelement location="${mainDir}"/>
<pathelement path="${Main-Class}"/>
</classpath>
</java>
Whenever I invoke ant, it says that “Main” can not be found. I can post the rest of the build.xml file if needed but it’s really just this part that I’m confused about. I’m pretty sure that I have the classname right but my biggest problem is figuring out what goes in for location and path. Right now I just have dummy variables.
EDIT: Here’s the whole file.
<?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>
EDIT 2: I should mention everything is already compiled and I have all the .class files. It’s not something I need to do in the Ant file.
The error message about “class cannot be found” is likely due to an incorrect classpath.
The classpath should grant access to all the class and resource files your application requires. It is composed of a set of directories and jar files.
locationwill denote a single directory or path, whereaspathwill denote multiple, separated by;or:depending on your platform.In your case, it seems to me that you want your classpath to either consist of
${pegaFuzzClassFiles}and${webScarabClassFiles}as directories, or of${distDir}/package-pega-${DSTAMP}.jarand${distDir}/package-web-${DSTAMP}.jaras jar files. You could do this using a single<pathelement path="…"/>element, but I’d suggest multiple<pathelement location="…"/>as I consider this to be clearer.You should also make sure that any third-party libraries used by your application are available on that path as well. You could nest one or more
<fileset>into that<classpath>, each of them describing all thejarfiles in a given directory.