In my Java source code, I want to use different classes from java archives (.jar) stored in the "lib" directory of the application. But if I execute "ant run", then I always get the message "java.lang.NoClassDefFoundError". I tried a few things to fix this, but nothing worked ... Maybe someone here can help me?
This is my build.properties file:
app.name=MyApplication app.version=1.0 main.class=mypackage.MyMain build.dir=build classes.dir=${build.dir}/classes jar.dir=${build.dir}/jar dist.dir=dist src.dir=src test.dir=test lib.dir=lib
This is my build.xml :
<?xml version="1.0" encoding="UTF-8" ?> <project name="My Project" default="run" basedir="."> <description>My description.</description> <property file="build.properties" /> <path id="classpath"> <fileset dir="${lib.dir}" includes="*.jar"/> </path> <target name="init" description="Prepare needed directories."> <mkdir dir="${build.dir}" /> <mkdir dir="${classes.dir}" /> <mkdir dir="${jar.dir}" /> <mkdir dir="${dist.dir}" /> <mkdir dir="${lib.dir}" /> </target> <target name="clean" description="Remove all files created by the build/test process."> <delete dir="${classes.dir}" /> <delete dir="${dist.dir}" /> </target> <target name="compile"> <mkdir dir="${classes.dir}"/> <javac srcdir="${src.dir}" destdir="${classes.dir}" debug="yes" includeantruntime="false"> </javac> </target> <target name="jar" depends="compile"> <delete dir="${jar.dir}"/> <mkdir dir="${jar.dir}"/> <jar destfile="${jar.dir}/${app.name}-${app.version}.jar" basedir="${classes.dir}"> <manifest> <attribute name="Class-Path" value="${lib.dir}"/> <attribute name="Main-Class" value="${main.class}"/> </manifest> </jar> </target> <target name="run" depends="jar"> <java jar="${jar.dir}/${app.name}-${app.version}.jar" fork="true"> </java> </target> </project>
It would be nice if anyone could help.
Hooray!
Benny
Benny neugebauer
source share