java.lang.NoClassDefFoundError:在Resin服务器启动时偶尔发生

时间:2009-03-23 23:57:28

标签: java resin

java.lang.NoClassDefFoundError:在Resin服务器启动时偶尔发生

这是在Resin 3.0.21上 在Linux机器上使用Java 1.5 ...

我在web.xml上定义了一个servlet来加载log4j.properties。 当servlet尝试在启动时加载时抛出此内容。

log4j-init:init log4j:ERROR无法实例化类[org.apache.log4j.DailyRollingFileAppender]。 java.lang.ClassNotFoundException:org.apache.log4j.DailyRollingFileAppender [java.lang.NoClassDefFoundError:org / apache / log4j / FileAppender]     在com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1264)     在com.caucho.loader.DynamicClassLoader.findClass(DynamicClassLoader.java:1149)     在com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1072)     在com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1021)     at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)     at java.lang.Class.forName0(Native Method)     at java.lang.Class.forName(Class.java:164)     在org.apache.log4j.helpers.Loader.loadClass(Loader.java:160)     在org.apache.log4j.helpers.OptionConverter.instantiateByClassName(OptionConverter.java:309)     在org.apache.log4j.helpers.OptionConverter.instantiateByKey(OptionConverter.java:112)     在org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:620)

3 个答案:

答案 0 :(得分:2)

最有可能的是,文件log4j.jar在类路径上找到两次,导致Classpath问题。如果log4J加载两次,一次加载到Web应用程序中,一次加载到Resin中,那么就会出现这种混乱。假设login中已存在log4j,如果它也存在于Web应用程序的类路径(lib目录)中,则尝试将其从应用程序的lib目录中删除。

答案 1 :(得分:1)

我们发现这通常发生在服务器上没有可用磁盘空间时

答案 2 :(得分:0)

可能不是“开始”而是“重启”的情况。

某些类型的log4j在应用程序关闭时没有卸载,而下一次(重新)启动将导致两次进入的情况(查看Eddie的帖子),如果在webapp中加载了log4j。解决方案是将log4j放入resin的lib /目录中。