gpt4 book ai didi

java - 意外异常 : java. lang.NoClassDefFoundError: org/apache/log4j/LogManager

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:15:03 25 4
gpt4 key购买 nike

我正在开发 GWT 应用程序。它使用 RPC 从内部系统收集信息。它通过使用库 jar 来实现,我们称它为 alpha.jar。我们在许多应用程序中使用这个 jar,所以它工作正常,顺便说一句,它是用 ANT 构建的,在 eclipse 之外。

alpha.jar 中的一些类引用 LOG4J2 以及许多其他外部 jar,因此当我们运行一个应用程序时,我们将类路径传递给所有这些类,一切正常。请注意,这不是一个简单的初学者问题。 alpha.jar 正常工作,包括对 Log4J 的调用。

问题:

在 Eclipse 中,我有这个 GWT 应用程序项目和 Alpha.jar 项目(当然还有源代码)。服务器部分需要实例化 alpha 对象并与 alpha 系统通信。

当通过向 Alpha 项目添加构建路径引用在 GWT 中执行此操作时,我的 GWT 应用程序运行良好。

当我代替项目引用包含(在 war/WEB-INF/lib 中)alpha.jar 并运行应用程序时,我第一次从 alpha.jar 实例化类时在标题中收到错误。

alpha.jar 的构建方式没有什么特殊之处,所以基本上它应该和eclipse 中的项目是一样的,对吧?

注意以下几点:

*) alpha.jar 的依赖 jar 也在 war/WEB-INF/lib 中。 log4j2-core、log4j-api 以及其他一些(例如常见的 apache)

*) 如果我删除 alpha.jar(以及调用它的代码),而只是添加调用 LOG4J2 的代码,该代码也可以正常工作!

为什么我在使用 JAR 时会出现这个奇怪的错误?另请注意 NoClassDefFoundError,它不是更常见的 ClassNotFoundException。请参阅What causes and what are the differences between NoClassDefFoundError and ClassNotFoundException?

如果您需要更多信息,请告诉我。

最佳答案

org.apache.log4j.LogManager 是 log4j 1.2(不是 log4j2)中的一个类。

因此,您的网络应用程序 jar 之一必须引用它。罪魁祸首应该在堆栈跟踪中可见。

根据您的情况,您可能只想向 Web 应用添加一个 log4j 1.2 jar,因为这两个版本彼此完全独立。

关于java - 意外异常 : java. lang.NoClassDefFoundError: org/apache/log4j/LogManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26338387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com