Spring MVCアプリケーションをSpring 3.1から4.3に、そしてHibernate 3.6から5.2にアップグレードしています。これをWildfly 8で実行します。依存関係はMavenによって管理されます。log4jを使用する必要があるときにjboss-loggingを使用するアプリケーション
Springでは、アプリケーションのクラスパスを調べ、適切なロギングフレームワークの選択を試みるcommons-loggingを使用します。私の場合、それは間違ったものを選んでいるようです。私は、私のpom.xmlにlog4jを含めて、jboss-loggingが存在しないことがわかる。
Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf
をだから私は失敗したコモンズ・ロギングがどこかにそれを見つけ、それを使用しようとしている、私のプロジェクトでJBossのログを持っていますが、いないにもかかわらず:ここで私が得ているエラーメッセージがあります。いくつかの検索の後、私はWildbirdでjboss-logging-3.1.4.GA.jarを見つけました。
エラーの原因は、これがjboss-loggingの古いバージョンであることです。新しいjarファイルをサーバーに追加し、それを指すようにmodule.xmlを編集しました。エラーが消えました。これは、commons-loggingがサーバー上でjboss-loggingを見つけることを証明しています。
問題はjboss-loggingが欲しくないということです。私はlog4jが必要です。コモンズログを強制的にlog4jを使用し、サーバー上のものを無視するにはどうすればよいですか?
編集:私はまたI以来、再び古いjarファイルを指すようにmodule.xmlを変更
<add-logging-api-dependencies value="false"/>
<use-deployment-logging-config value="false"/>
:私はリンクchrisharmをたどっ置くとstandalone.xmlファイルにこれらの行を追加しましたjbossが使用されていると、むしろエラーが表示されます。私は今、実行すると、私はこれを取得:今春は、JBoss-ログへのアクセス権を持っていないので
Caused by: java.lang.NoClassDefFoundError: org/jboss/logging/Logger
これは、正しい方向への第一歩かもしれないが、まだいくつかの理由のためにそれを使用しようとしています。