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
と の 2 つの jarで定義されていますlog4j-over-slf4j
。にはlog4j
- コンストラクターがあります。
protected Logger(String name)
コンストラクタlog4j-over-slf4j
があります:
Logger(String name) //Package access only
何らかの理由でRampart
不適切なクラスパスの順序がトリガーされ、 のlog4j-over-slf4j
前に配置されたようlog4j
です。
ただし、最も厄介な問題は、 のマニフェストを変更して順序を変更できなかったことです。そのため、最終的にjar をシステム クラスパスear
に追加することで「解決」しました。log4j
私の質問には2つの部分があります:
- 問題は
Rampart
よく知られており、解決策はありますか? - ear のマニフェストを変更してもクラスパスに影響しない理由は何でしょうか? (私はアプリケーションサーバーの経験があまりないので、明白な答えは大歓迎です)
Weblogic 10.3
、およびを使用していRampart 1.5.1
ます。Maven
ファイルのコンパイルとビルドにを使用しています。ear
今日、あるファイルについて知ったmar
ので、それに関する情報も歓迎します。