Die java-Fehlermeldung.lang.NoClassDefFoundError auf org.springframework.webflow.util.RandomGuid
Tut mir Leid, meine Frage ist blöd, aber ich bin nicht in der Lage, Sie zu beantworten, wie ein java-Analphabeten. Ich betreibe einen tomcat (5) auf CentOS5 (für einen CAS-server), und wenn ich versuche, öffnen Sie diese URL http://192.168.1.17:8080/cas-server-webapp-3.3.1/login bekomme ich diesen Fehler :
ersten Fehler:
java.lang.NoClassDefFoundError: could not initialize class org.springframework.webflow.util.RandomGuid
- und root-Fehler:
org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: could not initialize class org.springframework.webflow.util.RandomGuid
$CLASSPATH leer ist, und es scheint ein problem zu sein, aber ich weiß nicht, was in Sie setzen.
EDIT: Jared ist richtig, meine hosts-Dateien definiert 127.0.0.1 als localhost, und jetzt es sehr gut funktioniert!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es wichtig, dass zwei oder drei verschiedene Ausnahmen Meerenge in unserem Kopf, in diesem Fall:
java.lang.ClassNotFoundException
Diese Ausnahme zeigt an, dass die Klasse nicht gefunden wurde auf dem classpath. Dies bedeutet, dass wir versuchen, laden Sie die definition der Klasse, und die Klasse nicht vorhanden ist, auf dem Klassenpfad.java.lang.NoClassDefFoundError
Diese Ausnahme zeigt an, dass die JVM sah in seine internen class-definition-Daten-Struktur für die definition einer Klasse und finden es nicht. Dies ist anders als sagen, dass es nicht geladen werden konnte aus dem classpath. In der Regel zeigt dies, dass wir zuvor versucht eine Klasse zu laden aus dem classpath, aber es aus irgendeinem Grund fehlgeschlagen - jetzt versuchen wir wieder, aber wir sind nicht einmal versuchen, es zu laden, weil wir es nicht geschafft es zu laden früher. Die früheren Fehler könnte eine ClassNotFoundException oder eine ExceptionInInitializerError (was auf einen Fehler in der statischen Initialisierungs-block) oder eine beliebige Anzahl von anderen Problemen. Der Punkt ist, ein NoClassDefFoundError ist nicht unbedingt ein classpath-problem.Dass gesagt wird, eine andere Antwort poster zeigt an, dass die RandomGUID erfordert einen Aufruf InetAddress.getLocalHost(). Bei vielen Betriebssystemen, die diese auslösen würde eine host-lookup, der die hosts-Datei (
/etc/hosts
auf *NIX-Systemen,%WINDOWS%/system32/drivers/etc/HOSTS
auf einem Windows-system.)Ich habe ähnliche Fehler sehr Häufig auf, wenn die Datei falsch definiert den localhost-Adresse.
127.0.0.1
zeigen sollte, zu 'localhost' (und wahrscheinlich auchlocalhost.localdomain
.) Es sollte NICHT Punkt, um der tatsächlichen host-name der Maschine (auch wenn für einige Grund, dass viele ältere RedHat Linux Installateure mochte, um es falsch.)Heute die Umgebungsvariable $CLASSPATH sollte nicht verwendet werden; stattdessen wird die java-Anwendung sollte die classpath über die Befehlszeile festgelegt.
Jedoch, im Fall von tomcat und Bibliotheken verwendet, in den webapps, stellst du einfach die Gläser (für den Frühling) in das shared/lib/- Ordner der tomcat-installation.
NoClassDef: Die gesuchte definition der Klasse existiert, wenn die derzeit ausgeführte Klasse kompiliert wurde, aber die definition kann nicht mehr gefunden werden. Wie Sie fehlt eine Feder Klasse würde ich sagen, dass Sie fehlen eine der Feder jar-Dateien.
Gibt es 2 Orte, die jars im tomcat gibt es einen globalen Bereich (in 5 ist so etwas wie common/lib und ist ein bisschen anders in tomcat6) und der Bereich nur für Ihre webapp, welche webapps/mywebapp/WEB-INF/lib. Die Gläser für Ihre app wirklich gehen sollte, aber falls Sie sind wirklich ratlos und kann nicht herausfinden, andere Weise zu machen es zu arbeiten, Sie arbeiten in der globalen (wenn Sie nur einige von Ihnen in der weltweiten es könnte auch brechen, als Sie benötigen, eine Klasse, in der anderen ein Glas, und wenn man das Stück in der lokalen funktioniert es nicht. Dies gilt insbesondere für die spring-Bibliotheken, da gibt es eine Anzahl von unterschiedlichen Gläsern, nicht nur einer).
Ihrem CLASSPATH ist eine Liste von überall die jvm sieht für die Klassen. Dies könnte auch Verzeichnisse mit class-Dateien oder jar-oder zip-Dateien von Klassen, die aufgelistet werden, wie Verzeichnisse. Tomcat Last, die Sie mithilfe der oben genannten Verzeichnisse korrekt.
Der Grund ist das Versagen zu laden, Klasse RandomGUID.
Aus der Betrachtung RandomGUID Quelle, die meisten Chancen, dass sich die statische Initialisierung ist fehlgeschlagen bei InetAddress.getLocalHost().
Haben Sie einige seltsame networking-config auf dem host? Zum Beispiel, nicht komisch oder localhost-definition in /etc/hosts ?
Wenn dieser erschien plötzlich und unlogically zu dem, was Sie schon bauen, versuchen, die Umbenennung und die Umbenennung wieder Klassen, auf die verwiesen werden in einem Fehlerprotokoll auf. Das half mir in Netbeans mehrmals.