IllegalAccessError при добавлении Rampart в зависимости POM - PullRequest
0 голосов
/ 01 июня 2011

Мы попытались добавить 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 определяется в двух банках - log4j и log4j-over-slf4jlog4j - есть конструктор:

protected Logger(String name)

В log4j-over-slf4j есть конструктор:

Logger(String name) //Package access only

Кажется, что по какой-то причине Rampart вызвал неверный путь к классамзаказ и размещение log4j-over-slf4j до log4j.

Однако самая тревожная проблема заключается в том, что мы не смогли изменить наш манифест ear, чтобы изменить порядок, поэтому в итоге мы «решили» егодобавление log4j фляги к System Classpath

Мой вопрос состоит из двух частей:

  1. Знакома ли проблема Rampart и есть ли у нее решение??
  2. По какой причине изменение манифеста уха не повлияет на путь к классу?(Я не настолько опытен с серверами приложений - поэтому очевидные ответы приветствуются)

Мы используем Weblogic 10.3 и Rampart 1.5.1.Мы используем Maven для компиляции и сборки файла ear - и я только что узнал сегодня о файле mar, поэтому любые входные данные об этом также будут приветствоваться.

Ответы [ 2 ]

2 голосов
/ 02 июня 2011

В итоге мы изменили pom.xml вручную и изменили порядок зависимостей, чтобы поставить log4j перед rampart - что решило проблему с порядком пути к классам.

1 голос
/ 01 июня 2011

log4j-over-slf4j - это замена log4j, который работает с slf4j.Это означает, что в вашем пути к классам у вас есть классы с тем же именем и пакетом, но с очень разной реализацией.

Поскольку вы используете log4j в своей системе, безопасно удалить log4j-over-slf4j.в этом случае библиотека, которая нуждается в log4j-over-slf4j, будет фактически использовать исходный log4j.

...