2016-05-27 1 views
0

管理対象サーバを起動すると、WebLogic 12c管理対象サーバのoutファイルでlog4jに関連する次のClassCastExceptionが表示されます。私はCommons-logging-1.1.1.jarとlog4j-1.2.17.jarをWARのlibディレクトリにバンドルしていますが、他のバージョンのライブラリはバンドルしていません。また、要求を処理する際に生成された管理対象サーバーログファイルのエラーを貼り付けました。 WebLogic 12cに付属しているlog4jとコモンズのログを使用する必要がありますか?モジュールディレクトリには、com.bea.core.apache.commons.logging_1.1.2.jarとcom.bea.core.apache.log4j_1.2.0.0_1-2-15.jarがあります。以前はlog4jとWebLogicに問題はなかった。java.lang.ClassCastException - Log4j

jadomain.lang.ClassCastException: org.apache.log4j.RollingFileAppender cannot be cast to org.apache.log4j.Appender 
     at org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.jadomain:248) 
     at org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurator.jadomain:176) 
     at org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfigurator.jadomain:191) 
     at org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOMConfigurator.jadomain:523) 
     at org.apache.log4j.xml.DOMConfigurator.parseCategory(DOMConfigurator.jadomain:436) 
     at org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.jadomain:1004) 
     at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.jadomain:872) 
     at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.jadomain:778) 
     at org.apache.log4j.xml.DOMConfigurator.configure(DOMConfigurator.jadomain:906) 
     at com.domain.d.app.restwrapper.ContextListener.contextInitialized(ContextListener.jadomain:37) 
     at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.jadomain:66 

ログファイル:ファイルアウト

]] Root cause of ServletException. 
jadomain.lang.LinkageError: loader constraint violation: when resolving method "org.apache.log4j.LogMF.entering(Lorg/apache/log4j/Logger;Ljadomain/lang/String;Ljadomain/lang/String;)V" the class loader (instance of weblogic/utils/classloaders/ChangeAwareClassLoader) of the current class, com/domain/d/app/restwrapper/appResource, and the class loader (instance of weblogic/utils/classloaders/GenericClassLoader) for resolved class, org/apache/log4j/LogMF, have different Class objects for the type /lang/String;)V used in the signature 
     at com.domain.d.app.restwrapper.appResource.addQuery(appResource.jadomain:244) 
     at com.domain.d.app.restwrapper.appResource.addQuery(appResource.jadomain:224) 
     at com.domain.d.app.restwrapper.appResource$Proxy$_$$_WeldClientProxy.addQuery(appResource$Proxy$_$$_WeldClientProxy.jadomain) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jadomain:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.jadomain:43) 

答えて

1

あなたがlog4jのトウバージョン間で競合しています。 1つはサーバーのクラスパスからロードされ、もう1つはWebアプリケーションのクラスパスからロードされます。 これを解決するには、Webアプリケーションがアプリケーションのものだけを使用するように設定できます。 weblogic.xmlファイルを更新し、次のタグを追加してください:

<prefer-web-inf-classes>true</prefer-web-inf-classes> 
関連する問題