J'utilise des fichiers jar externes dans mon programme. Un de ce pot est créé par moi. Lorsque j'utilise ce fichier jar dans un projet eclipse, cela fonctionne correctement. Mais quand j'essaye de faire la même chose en utilisant Ant, cela montre NoClassDefFoundError. Il n'a pas été en mesure d'obtenir la classe dans mon fichier jar.java.lang.NoClassDefFoundError lors de l'exécution ant
Ma méthode principale est comme ceci:
import pckg.harness.SomeClass;
public class Main {
public static void main(String[] args)
{
SomeClass someClass=new SomeClass();
someClass.runSomeMethod();
}
}
Mon build.xml est comme:
<project basedir="." default="run" name="project">
<property name="src" location="src" />
<property name="libs" location="lib" />
<path id="class.path">
<pathelement location="${libs}/ExtJarOne.jar" />
<pathelement location="${libs}/ExtJarTwo.jar" />
<pathelement location="${libs}/ExtJarThree.jar" />
<pathelement location="bin" />
</path>
<target name="compile">
<javac classpathref="class.path" srcdir="${src}" destdir="./bin"/>
</target>
<target name="jar" depends="compile">
<mkdir dir="jar"/>
<jar destfile="./jar/Class.jar" basedir="./bin">
<manifest>
<attribute name="Main-Class" value="pckg.main.Main"/>
</manifest>
</jar>
</target>
<target name="run" depends="jar">
<java jar="./jar/Class.jar" fork="true"/>
</target>
</project>
Maintenant, quand je suis en ma fourmi, je reçois l'erreur suivante:
run:
[java] Exception in thread "main" java.lang.NoClassDefFoundError: pckg/harn
ess/SomeClass
[java] at pckg.main.Main.main(Unknown Source)
[java] Caused by: java.lang.ClassNotFoundException: pckg.harness.SomeClass
[java] at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
[java] at java.security.AccessController.doPrivileged(Native Method)
[java] at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
[java] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
[java] ... 1 more
[java] Java Result: 1
duplication possible de [Impossible de trouver la classe principale dans le fichier compilé avec Ant] (http://stackoverflow.com/questions/3143567/cannot-find-main-class-in-file-compiled-with-ant) . Si vous exécutez le fichier jar en tant qu'exécutable, vous devez inclure le chemin de classe dans le manifeste. –