Ich versuche, eine einfache Java-Klasse innerhalb von Eclipse zu kompilieren und auszuführen. Die Kompilieraufgabe funktioniert einwandfrei, und da ich keinen Zielordner angegeben habe, befinden sich die Erstellungsdateien im selben Verzeichnis wie die Quelle. Was in Ordnung ist, im Moment muss ich nur noch lernen, wie ich die Klasse mit der Methode main() ausführen kann.ClassNotFoundException mit ant's Java-Aufgabe und Klassenpfad
Ich habe versucht, den vollständig qualifizierten Namen der Klasse mit (mit Paketnamen, etc.) und den Namen der Klasse allein, aber ich bekomme eine java.lang.ClassNotFoundException
Buildfile: C:\Users....\build.xml
run:
[java] java.lang.NoClassDefFoundError: code/control/MyClass
[java] Caused by: java.lang.ClassNotFoundException: code.control.MyClass
[java] at java.net.URLClassLoader$1.run(Unknown Source)
[java] at java.security.AccessController.doPrivileged(Native Method)
[java] at java.net.URLClassLoader.findClass(Unknown Source)
[java] at java.lang.ClassLoader.loadClass(Unknown Source)
[java] at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
[java] at java.lang.ClassLoader.loadClass(Unknown Source)
[java] at java.lang.ClassLoader.loadClassInternal(Unknown Source)
[java] Could not find the main class: code.control.MyClass. Program will exit.
[java] Exception in thread "main"
[java] Java Result: 1
compile:
default:
BUILD SUCCESSFUL
Total time: 234 milliseconds
Im Folgenden immer werden die Ziele genommen aus meiner Datei build.xml:
<target name="default" depends="compile" description="learn">
</target>
<target name="compile" depends="run">
<javac srcdir="src/" />
</target>
<target name="run">
<java classname="code.control.MyClass" fork="true"/>
</target>
Ich kann nicht herausfinden, warum die Klasse nicht gefunden wird. MyClass enthält die main() -Methode und da ich keinen Klassenpfad angegeben habe, sollte er sich das aktuelle Verzeichnis ansehen, welches die src/right?
Die Entwicklung Verzeichnis ist die übliche Eclipse Dateistruktur:
Projektname/src/code/control/MyClass
Wenn es ein Classpath Problem ist, wie ich es beheben könnte? Ich hatte immer Probleme, das Konzept zu verstehen, "setz es auf deinen Klassenpfad" ... Wenn jemand mit dem Klassenpfad im Ameisenkontext ein wenig Erklärung geben könnte, wäre ich sehr dankbar.
Danke für jede Hilfe zu diesem Thema. Die Version von ant ist 1.7.0
beachten Sie, dass ClassNotFoundExceptions und NoClassDefFoundErrors sind nicht synonym. – akf
Haben Sie bemerkt, dass Ihr Ziel "kompilieren" von "run" abhängt? also vor dem Kompilieren wird aufgerufen, laufen ... fix: (...) (.. .) –