gpt4 book ai didi

java - 将 Rampart 添加到 POM 的依赖项时出现 IllegalAccessError

转载 作者:行者123 更新时间:2023-12-02 00:41:42 25 4
gpt4 key购买 nike

我们尝试将 Rampart 添加到模块的 POM 文件中,这样做后,我们的 ear 无法再启动,但出现以下异常:

java.lang.IllegalAccessError: tried to access method org.apache.log4j.Logger.<init>(Ljava/lang/String;)V from class org.apache.log4j.spi.RootLogger
at org.apache.log4j.spi.RootLogger.<init>(RootLogger.java:43)
at org.apache.log4j.LogManager.<clinit>(LogManager.java:78)
at org.apache.log4j.xml.XMLWatchdog.doOnChange(DOMConfigurator.java:862)
at org.apache.log4j.helpers.FileWatchdog.checkAndConfigure(FileWatchdog.java:88)
at org.apache.log4j.helpers.FileWatchdog.<init>(FileWatchdog.java:57)
at org.apache.log4j.xml.XMLWatchdog.<init>(DOMConfigurator.java:853)
at org.apache.log4j.xml.DOMConfigurator.configureAndWatch(DOMConfigurator.java:584)

org.apache.log4j.Logger 在两个 jar 中定义 - log4jlog4j-over-slf4j。在 log4j 中 - 有一个构造函数:

protected Logger(String name)

log4j-over-slf4j中有一个构造函数:

Logger(String name) //Package access only

由于某种原因,Rampart 似乎触发了错误的类路径顺序,并将 log4j-over-slf4j 置于 log4j 之前。

但是,最麻烦的问题是我们无法更改 ear 的 list 来更改顺序 - 因此最终我们通过添加 log4j 来“解决”它> jar 到系统类路径

我的问题分为两部分:

  1. Rampart 问题是否熟悉?有解决方案吗?
  2. 这可能是什么原因改变耳朵的表现不会影响类路径吗? (我是没有那么有经验应用程序服务器 - 如此明显欢迎回答)

我们使用的是Weblogic 10.3Rampart 1.5.1。我们正在使用 Maven 编译和构建 ear 文件 - 我今天刚刚了解到 mar 文件,因此任何有关该文件的输入也将欢迎。

最佳答案

log4j-over-slf4j 是代理 slf4j 的 log4j 的替代品。这意味着在您的类路径中,您有具有相同名称和包的类,但实现却截然不同。

由于您在系统中使用 log4j,因此删除 log4j-over-slf4j 是安全的。在这种情况下,需要 log4j-over-slf4j 的库实际上将使用原始的 log4j。

关于java - 将 Rampart 添加到 POM 的依赖项时出现 IllegalAccessError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6204855/

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