On 24 Aug 2005, at 16:56, Petar Tahchiev wrote:

On 24/08/05, Stephen Morrison <[EMAIL PROTECTED]> wrote:


On 24 Aug 2005, at 16:20, Petar Tahchiev wrote:

On 24/08/05, Stephen Morrison <[EMAIL PROTECTED]> wrote:


On 24 Aug 2005, at 15:03, Petar Tahchiev wrote:


Hi,

I'm trying to build an Ant project that uses some Apple Cocoa
classes.
These are stored as .class files and not as jars. They reside in a
completely different folder to my project. I can compile and run my
program by referencing these from the command line as follows:

javac -classpath /System/Library/Java:. MyProgram.java

java -classpath /System/Library/Java:. MyProgram

Is there a way I can replicate this functionality using Ant and add
the
directory (System/Library/Java) to the classpath?

I've tried solutions from the Ant documentation and the archives of
this list but haven't been able to get anything to work yet.

Thanks in advance,
Steve.

You can always use the <compilerarg> task to pass arguments to the
compiler,
but rather why don't you try
<path id="compile.cp">
<fileset dir="YOUR DIR">
<include name=""/>
</fileset>
</path>
and later on call the classpath using <javac srcdir="" destdir=""
classpathref="compile.cp"/>
Or just use <classpath>

--
Regards, Petar!

I tried the compilerarg task but got the error "Could not create the
task or type of task: conpilerarg". I declared this as <compilerarg
line="-classpath /System/Library/Java/"/>.

I also tried the other methods you listed but I still got the class
not
found error. My build.xml file was generated for my by my IDE Xcode
and currently looks like this. Sorry if I am missing something obvious
but I am totally new to Ant.

<?xml version="1.0" encoding="UTF-8"?>
<project name="MyGame" default="jar" basedir=".">
<property name="src" location="src"/>
<property name="bin" location="bin"/>
<property name="lib" location="lib"/>
<property name="dist" location="dist"/>
<property name="jarfile"
location="${dist}/${ant.project.name <http://ant.project.name> <
http://ant.project.name>}.jar"/>
<property name="compile.debug" value="true"/>

<fileset id="lib.jars" dir="${lib}">
<include name="**/*.jar"/>
</fileset>

<path id="lib.path">
<fileset refid="lib.jars"/>
</path>

<target name="compile" description="Compile code">
<mkdir dir="${bin}"/>
<mkdir dir="${lib}"/>
<javac srcdir="${src}" destdir="${bin}" includeAntRuntime="no"
classpathref="lib.path" debug="${compile.debug}">
</javac>
</target>

<target name="jar" depends="compile" description="Build jar">
<mkdir dir="${dist}"/>
<jar jarfile="${jarfile}" basedir="${bin}" manifest="Manifest">
<!-- Merge library jars into final jar file -->
<zipgroupfileset refid="lib.jars"/>
</jar>
</target>

<target name="run" depends="jar" description="Run jar file">
<java jar="${jarfile}" fork="yes" failonerror="true"/>
</target>

<target name="clean" description="Remove build and dist
directories">
<delete dir="${bin}"/>
<delete dir="${dist}"/>
</target>
</project>

My fault. I forgot to tell you that compilerarg is an optioanl
ant-contrib
task and if you want to use it you have to download the tasks from the
ant-contrib site: http://ant-contrib.sourceforge.net/, also an
installation
howto is available there. But instead try this
<javac .........>
<classpath>
<pathelement location="yourdir"/>
</classpath>
</javac>

--
Regards, Petar!


Thanks for your help so far but I still can't get it to work. Firstly
I tried the additions to javac that you outlined above but I still got
the class not found error. I then tried downloading the ant-contrib
task. I have referenced this as outlined in the documentation and
copied the jar file to my lib directory of my project. But I still get
the could not create task error. Below is the code I added to my
build.xml file. Is this correct?

<taskdef resource="net/sf/antcontrib/antcontrib.properties">
<classpath>
<pathelement location="./lib/ant-contrib.jar" />
</classpath>
</taskdef>

<compilerarg line="-classpath /System/Library/Java"/>

I suppose that the problem is that you may have not copied the
ant-contrib-version.jar to your $ANT_HOME/lib folder. I am still curious
that
<javac srcdir="" destdir="">
<classpath>
<pathelement location="yourdir"/>
</claspath>
</javac>
doesn't work. Remember that you must ignore the package folders when
pointing "yourdir". Point only the top-root forlder.

--
Regards, Petar!

You were right I hadn't copied the file to the $ANT_HOME/lib folder. But after doing that it now runs, but still gives the class not found error. There are 2 possible problems as I can see it. Either I'm referring to the directory wrongly, or else I haven't defined the compilerarg statement correctly.

When I refer to my directory which is /System/Library/Java this is the reference from the root folder on my hard drive, and is the top root folder of the package I want to use. Could it be that Ant is looking for that folder from within the current folder my Ant project is stored in and not the root folder of my computer? In which case how can I get it to point to the computers root directory? I thought starting with / would do that.

Alternatively I could be defining the compilerarg statement wrongly. Firstly I have placed it within the <javac> tags. Is this the correct location? Also, is the compilerarg statement below the correct way to carry out the javac command line statement below it?

<compilerarg line="-classpath /System/Library/Java"/>

javac -classpath /System/Library/Java:. MyProgram.java

Thanks.

Reply via email to