In meinem Java-Quellcode möchte ich verschiedene Klassen aus Java-Archiven (.jar) verwenden, die im "lib" -Verzeichnis meiner Anwendung gespeichert sind. Aber wenn ich "ant run" mache, bekomme ich immer eine "java.lang.NoClassDefFoundError" Nachricht. Ich habe verschiedene Dinge ausprobiert, aber nichts hat funktioniert ... Vielleicht kann mir hier jemand helfen?Wie externe Bibliotheken in Ant build.xml-Datei enthalten?
Das ist mein build.properties Datei:
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
Das ist mein 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>
<!-- Initialization -->
<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>
<!-- Cleanup -->
<target name="clean" description="Remove all files created by the build/test process.">
<delete dir="${classes.dir}" />
<delete dir="${dist.dir}" />
</target>
<!-- Compile application -->
<target name="compile">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}"
destdir="${classes.dir}"
debug="yes"
includeantruntime="false">
<!-- <classpath refid="classpath" /> -->
</javac>
</target>
<!-- Java Archive -->
<target name="jar" depends="compile">
<!--<delete file="${jar.dir}/${app.name}-${app.version}.jar"/>-->
<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>
<!-- Run application -->
<target name="run" depends="jar">
<java jar="${jar.dir}/${app.name}-${app.version}.jar"
fork="true">
</java>
<!--
<java fork="true" classname="${main.class}">
<classpath>
<path refid="classpath"/>
<path location="${jar.dir}/${app.name}-${app.version}.jar"/>
</classpath>
</java>
-->
</target>
</project>
Es wäre schön, wenn jemand helfen könnte.
Prost!
Benny
was macht Ihr 'lib' Verzeichnis aussehen? Sind alle JAR-Dateien in diesem Verzeichnis abgelegt oder gibt es Unterverzeichnisse? –
Alle JAR-Dateien befinden sich in diesem Verzeichnis (ohne Unterverzeichnisse). Die Struktur sieht wie folgt aus: ./lib/log4j-1.2.9.jar,./lib/cobertura.jar, ./lib/easymock-3.0.jar, ... Wie kann ich diese Bibliotheken in meine JAR-Datei aufnehmen? –