Java.lang.VerifyError: Den Ursachen auf den Grund gehen
Der berüchtigte java.lang.VerifyError schlägt erneut zu , wodurch das zugrunde liegende Problem in seiner kryptischen Fehlermeldung verschleiert wird. Dieser Artikel befasst sich mit den möglichen Gründen, warum dieser verwirrende Fehler auftreten kann, und konzentriert sich dabei speziell auf das aufgetretene Problem:
Szenario:
Ein java.lang.VerifyError tritt beim Starten eines JBoss-Servers auf, der ein mit JDK kompiliertes Servlet hostet 1.5.0_11. Eine Neukompilierung mit JDK 1.5.0_15 führt zu keinem Erfolg. Durch Ändern des Methodennamens wird der Fehler in eine teilweise gedruckte Methodensignatur umgewandelt.
Erkundung der Grundursache:
1. Nicht übereinstimmende Bibliotheken:
VerifyErrors entstehen häufig durch die Verwendung unterschiedlicher Bibliotheken während der Kompilierung und Laufzeit. Ähnlich wie im gemeldeten Fall kann das Kompilieren mit einer Bibliothek (z. B. Xerces 1), aber die Verwendung einer anderen zur Laufzeit (z. B. Xerces 2) zu Bytecode-Diskrepanzen führen.
2. Nicht übereinstimmende Methodensignaturen:
Java überprüft den Bytecode zur Laufzeit auf ordnungsgemäßen Methodenaufruf. Wenn der Bytecode versucht, eine Aktion auszuführen, die nicht zulässig ist, beispielsweise die Übergabe eines Methodenrückgabewerts vom Typ String an ein Feld vom Typ List, wird ein VerifyError ausgelöst. Diese Nichtübereinstimmungen können aufgrund von Änderungen in Klassen- oder Methodendefinitionen zwischen Kompilierung und Ausführung auftreten.
3. Probleme mit dem Klassenlader:
Gelegentlich kann sich der Klassenlader des Servers unvorhersehbar verhalten und Klassen in einer Reihenfolge laden, die gegen Abhängigkeiten verstößt. Dies kann dazu führen, dass mehrere Versionen derselben Klasse geladen werden, was möglicherweise zu VerifyErrors führt.
Tipps zur Fehlerbehebung:
Das obige ist der detaillierte Inhalt vonWarum löst mein JBoss-Server beim Starten eines Servlets einen java.lang.VerifyError aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!