2009-03-23 8 views
1

java.lang.NoClassDefFoundError: geschieht sporadisch auf Resin Sever startenjava.lang.NoClassDefFoundError: geschieht sporadisch auf Resin Sever starten

Dies ist auf Resin 3.0.21 Verwendung von Java 1.5 auf Linux-Maschine ...

Ich habe ein Servlet in der web.xml definiert, um die log4j.properties zu laden. Dies wird ausgelöst, wenn das Servlet versucht, beim Start zu laden.

log4j-init: init log4j: FEHLER Die Klasse [org.apache.log4j.DailyRollingFileAppender] konnte nicht instanziiert werden. java.lang.ClassNotFoundException: org.apache.log4j.DailyRollingFileAppender [java.lang.NoClassDefFoundError: org/Apache/log4j/FileAppender] bei com.caucho.loader.DynamicClassLoader.loadClass (DynamicClassLoader.java:1264) bei com .caucho.loader.DynamicClassLoader.findClass (DynamicClassLoader.java:1149) bei com.caucho.loader.DynamicClassLoader.loadClass (DynamicClassLoader.java:1072) bei com.caucho.loader.DynamicClassLoader.loadClass (DynamicClassLoader.java:1021) bei java.lang.ClassLoader.loadClassInternal (ClassLoader.java:319) bei java.lang.Class.forName0 (native Methode) bei Java.Lang.Class.forName (Class.java:164) bei org. apache.log4j.helpers.Loader.loadClass (Loader.java:160) an org.apache.log4j.helpers.OptionConverter.instantiateByClassName (OptionConverter.java309) bei org.apache.log4j.helpers.OptionConverter.instantiateByKey (OptionConverter.java:112) bei org.apache.log4j.PropertyConfigurator.parseAppender (PropertyConfigurator.java:620)

Antwort

1

Wir fanden heraus, dass dies in der Regel geschieht, wenn auf dem Server kein freier Speicherplatz mehr vorhanden ist

2

Höchstwahrscheinlich wird die Datei log4j.jar zweimal im Classpath gefunden, was Classpath-Probleme verursacht. Wenn log4J zweimal geladen wird, einmal in der Web Application und einmal in Resin, dann können Sie diese Art von Verwirrung bekommen. Angenommen, log4j ist bereits in Resin vorhanden, wenn es auch im Klassenpfad Ihrer Webanwendung (lib-Verzeichnis) vorhanden ist, dann versuchen Sie, es aus dem lib-Verzeichnis Ihrer Anwendung zu entfernen.

0

Es könnte nicht "Start", sondern "Neustart" Situation sein.

Einige Klassen von log4j werden beim Herunterfahren der App nicht entladen und der nächste (Neu-) Start wird die Situation mit zweimaliger Eingabe verursachen (siehe Eddies Post), wenn log4j in webapp geladen wird. Die Lösung ist log4j in das lib/Verzeichnis von harz zu legen.

Verwandte Themen