1

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

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

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

log4j-init:初始化 log4j:错误无法实例化类 [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) 在 java.lang .ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:164) at org.apache.log4j.helpers.Loader.loadClass (Loader.java:160) 在 org.apache.log4j.helpers.OptionConverter。

4

3 回答 3

2

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

于 2009-03-24T00:04:41.773 回答
1

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

于 2011-01-14T21:41:02.970 回答
0

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

如果 log4j 在 webapp 中加载,某些类 log4j 不会在应用程序关闭时卸载,并且下次(重新)启动将导致两次进入的情况(查看 Eddie 的帖子)。解决办法是将log4j放到resin的lib/目录下。

于 2009-03-24T06:01:55.923 回答