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

发布于 2024-07-16 11:15:33 字数 1286 浏览 8 评论 0原文

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) 在 java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) 在 java.lang.Class.forName0(本机方法) 在 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)

java.lang.NoClassDefFoundError: happens sporadically on Resin sever start up

This is on Resin 3.0.21
Using Java 1.5 on Linux machine...

I have a servlet defined on the web.xml to load the log4j.properties.
This is thrown when the servlet is trying to load on start up..

log4j-init: init log4j:ERROR Could not instantiate class [org.apache.log4j.DailyRollingFileAppender].
java.lang.ClassNotFoundException: org.apache.log4j.DailyRollingFileAppender [java.lang.NoClassDefFoundError: org/apache/log4j/FileAppender]
at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1264)
at com.caucho.loader.DynamicClassLoader.findClass(DynamicClassLoader.java:1149)
at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1072)
at 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)
at org.apache.log4j.helpers.Loader.loadClass(Loader.java:160)
at org.apache.log4j.helpers.OptionConverter.instantiateByClassName(OptionConverter.java:309)
at org.apache.log4j.helpers.OptionConverter.instantiateByKey(OptionConverter.java:112)
at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:620)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

冷…雨湿花 2024-07-23 11:15:33

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

Most likely, the file log4j.jar is found on the classpath twice, causing Classpath problems. If log4J gets loaded twice, once in the Web Application and once in Resin, then you can get this kind of confusion. Assuming log4j is already present in Resin, if it is also present in your web application's classpath (lib directory), then try removing it from your application's lib directory.

雨的味道风的声音 2024-07-23 11:15:33

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

We found out that this usually happens when there is no free disk space on the server

困倦 2024-07-23 11:15:33

这可能不是“启动”而是“重新启动”的情况。

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

It might be not "start" but "restart" situation.

Some classes of log4j are not unloaded on app's shutdown and next (re)start will cause the situation with twice entry (look at Eddie's post), if log4j loaded in webapp. The solution is to put log4j into resin's lib/ directory.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文