Ich versuche, eine einfache Java-Klasse in Eclipse zu kompilieren und auszuführen. Die Kompilierungsaufgabe funktioniert gut, und da ich keinen Zielordner angegeben habe, befinden sich die Build-Dateien im selben Verzeichnis wie der Quellcode. Was in Ordnung ist, ist im Moment alles, was ich brauche, um zu lernen, wie ich die Klasse mit der main()-Methode ausführen kann.
Ich habe versucht, den voll qualifizierten Namen der Klasse (mit Paketnamen usw.) und den Klassennamen allein zu verwenden, aber ich erhalte immer 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
Nachfolgend sind die Ziele aus meiner build.xml-Datei aufgeführt:
<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 angebe, sollte es im aktuellen Verzeichnis suchen, das src/ ist, richtig?
Das Entwicklungsverzeichnis entspricht der üblichen Eclipse-Dateistruktur:
Projektname/src/code/control/MyClass
Wenn es ein Klassenpfad-Problem ist, wie könnte ich es beheben? Ich hatte immer Probleme, das Konzept "put it on your classpath" zu verstehen ... Wenn jemand ein wenig Erklärung mit dem Klassenpfad in der Ameise Kontext bieten könnte, wäre ich sehr dankbar.
Vielen Dank für jede Hilfe in dieser Sache. Die Version von ant ist 1.7.0
0 Stimmen
Beachten Sie, dass ClassNotFoundExceptions und NoClassDefFoundErrors nicht synonym sind.
0 Stimmen
Haben Sie bemerkt, dass Ihr Ziel "compile" von "run" abhängt? Also wird "run" vor dem Kompilieren aufgerufen... Korrektur: <target name="compile"> (...) </target> <target name="run" depends="compile"> (...) </target>