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