Hey everybody,
I'm doing a project under eclipse 3.2 and i'm trying to write an ant file
that can be used on any other project and i'm having some troubles :)
So, to cut short on chit-chat, here my project structure:
-src folder with some sub packages
-lib folder containing tird party librairies such as log4j
-dist folder to put the generated JAR
ant.properties to store variables definition

Here are some snippets of my build file to hepl unsertand my probelem:

<!-- =================================
         target: Compile
        ================================= -->
   <target name="Compile" depends="Clean" description="Compile current
project">

       <echo>Compilation process started...</echo>

       <javac srcdir="${src.dir}" destdir="${class.dir}">
           <classpath location="${lib.dir}">
               <fileset dir="${lib.dir}">
                   <include name="**/*.jar" />
               </fileset>
           </classpath>

       </javac>


   </target>

This task is OK but the dist task does not work properly:

<!-- - - - - - - - - - - - - - - - - -
         target: dist
        - - - - - - - - - - - - - - - - - -->
   <target name="dist" depends="Compile">
       <mkdir dir="${dist.dir}" />



       <jar destfile="${dist.dir}\${executable}" basedir="${class.dir} ">
           <fileset dir="${class.dir}" />
           <zipfileset dir="${lib.dir}">
            <include name="**/*.jar" />
           </zipfileset>


           <manifest>
               <attribute name="Manifest-Version" value="1.0" />
               <attribute name="Created-By" value="L. Morissette" />
               <!--attribute name="Class-Path" value="${classpath} "/-->
               <attribute name="Main-Class" value="${mainClass}" />
           </manifest>
       </jar>

   </target>

This correctly add my libs into "${executable}" but when I try to run it, I
get the following exception :

Exception in thread "main" java.lang.NoClassDefFoundError:
org/apache/log4j/Logger
       at LogTest.<clinit>(Unknown Source)
       at MainClass.main(Unknown Source)

(assuming that I'm using log4j third-party lib)

I've seen somewhere that it was necessary to define a Class-Path entry to
the MANIFEST,MF file, so i've  created a task setClassPath:

<!-- - - - - - - - - - - - - - - - - -
         target: setClassPath
        - - - - - - - - - - - - - - - - - -->
   <target name="setClassPath">
       <echo>Setting classPath</echo>
       <pathconvert property="classpath" pathsep=" ">
           <path>
               <fileset dir="${lib.dir}" includes="*.jar,*.zip" />
           </path>
           <map from="${lib.dir}" to="." />
       </pathconvert>


   </target>
But this does'nt work either, so what did I do wrong ?

Any help would be welcome :)


P.S: for those who might ask why i'm not using Netbeans, the reason is
simple, I have a restriction to use only Eclipse and I want to be able to
use my buildfile in any other projects with same structure whitout having to
chand anything to the script base :)

Oh and I almost forgot, in a old project I specified all the libs myself and
it worked fine ??!!!!




Thank again :)

--
Laurent Morissette
---------------------------
Software Engeneer, CGI

Reply via email to