Einrichten der java-classpath und java_home korrekt in Ubuntu
Ich bin immer der Fehler
Exception in thread "main" java.lang.NoClassDefFoundError:
Wenn ich versuche, und führen Sie eine kompilierte Klasse auf Ubuntu. Ich bin mit einem sehr einfachen Helloworld-Beispiel, und die Millionen von Antworten, die bereits vorhanden ist, auf dem internet zu behaupten, mein CLASSPATH und JAVA_HOME-Variablen wurden nicht korrekt eingestellt.
Allerdings habe ich bearbeitet etc/environment den richtigen Ordner sowie den aktuellen Ordner:
PATH=".:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
JAVA_HOME="/usr/lib/jvm/java-1.5.0-sun/"
CLASSPATH=".:/usr/lib/jvm/java-1.5.0-sun/lib"
dann erscheinen, wenn ich geben Sie den Befehl set. In jedem Fall, auch wenn ich die classpath manuell mit
sudo java -cp . myfirstjavaprog.class
Bekomme ich den gleichen Fehler. Wo sonst sollte ich suchen? Das muss ein problem mit der Konfiguration.
Vielen Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Möchten Sie auf den Tropfen .Klasse vom Ende. Geben Sie einfach...
Empfehle ich dringend, loszuwerden, die CLASSPATH-Umgebungsvariable, oder zumindest nehmen Sie Ihre JRE/JDK heraus.
"."
ist implizit in der classpath-sofern nicht anders angegeben. Und seit Java 1.3, Java wurde intelligent genug, um zu finden, Ihre eigenen Laufzeitumgebung und-Bibliotheken basierend auf der Ausführungspfad des javac/java-executables. Seit dann, es ist schon überflüssig, wenn nicht geradezu falsch, geben Sie diese im classpath. Sicherlich.../lib
ist falsch, denn es sind nur die Gläser gibt es keine Klassen, und diejenigen, die nicht abgeholt aus dem classpath, wenn Sie nicht einzeln und explizit benannt.Moderne javas sind smart genug, dass Sie können geben Sie einfach
java <classname>
beim stehen im root-Verzeichnis des classpath, und es wird Einfach Funktioniert™.Du vermischt äpfel und Birnen.
Eine raw-java oder javac-Aufruf auf der Kommandozeile braucht einen Klassenpfad zu wissen, wo Sie zugreifen können, die Ihre Klassen. Beim ausführen
geben Sie java-die Liste der Orte, um zu finden, die runnable-Klassen. Es ist nicht anderswo, einschließlich ".", es sei denn, Sie sagen es. So "CLASSPATH" hilft Ihnen nicht, es sei denn, Sie laufen
Inotherwords, es ist nur eine Verknüpfung zu halten, die zu geben Sie den Klassenpfad.
Viele Programme sind so konfiguriert, JAVA_HOME, aber letztlich die Ausführung von java-Programmen brauchen Sie nur eine konfiguriert classpath und den path zu java (Sie finden es durch die JAVA_HOME-variable, so dass Sie noch brauchen, es für Dinge wie die Ameise, aber seine " noch begrifflich nur eine Verknüpfung, wie gut).
Ihr PFAD ist der Pfad, wo das system sieht für Binärdateien. Wenn Sie java nicht auf Ihrem Pfad (Typ "java", es wird Ihnen zeigen, welche, wenn überhaupt, java ist auf Ihrem Pfad) running /full/path/to/java ist identisch nur mit "java" und dass das system den binären in die PATH-variable.
Nein, ich glaube, es ist die CLASSPATH-environment-Variablen werden ignoriert.
Den richtigen Weg, es zu tun, ist die Verwendung der -classpath-option, wenn Sie kompilieren und ausführen. Legen Sie für jedes Projekt. Die Beweise, die Sie haben, bevor Sie Ihre Augen sagt Sie es so.
Warum ist der CLASSPATH ignoriert wird? Mehrere Gründe:
Verwenden
Setzt es eine Menge von classpath Zeug.
für die Einstellung der java_home-variable, hier sind Anweisungen.
http://luckydev07.blogspot.com/2009/08/setting-javahome-in-ubuntu-linux.html
und
classpath gesetzt werden kann, ähnlich
Ich würde empfehlen Ihnen, verbringen einige Zeit Blick auf die Sonne-tutorial. Es wird Ihnen helfen, später - Klasse-Pfade sind notorische Störenfriede.
http://java.sun.com/docs/books/tutorial/getStarted/TOC.html
Ok ich war auf der Suche für das problem an der falschen Stelle. Es stellte sich heraus, dass Java war in Ordnung und ich war das Opfer von immer den gleichen Fehler für zwei verschiedene Probleme.
War ich ursprünglich versucht, führen Sie ein swing-Beispiel, das habe ich von der Java-website, aber ich hatte nicht bemerkt, dass es hatte eine package-definition. Ich habe den richtigen Ordner-Struktur und jetzt läuft es einwandfrei.
Wenn ich versuchte zu laufen ein HelloWorld-Beispiel, ich hatte versehentlich eingeschlossen die .Klasse Erweiterung.
Beide diese Probleme gab mir ClassNotFound Fehler.
Danken Ihnen sehr für all Ihre Hilfe.