2017-09-22 10 views
1

JBoss EAP環境でjackson-databindを使用しているときに問題が発生しています。私たちは通常、完璧に動作するTomcat 8にデプロイします。 mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);が、我々はこのエラーを受け取る実行されます:ときジャクソン、それ自身が通常のオブジェクトをデシリアライズは、しかしJBoss EAP 7のJackson Dependenciesが見つかりません

13:18:26,170 ERROR java.lang.NoSuchFieldError: SNAKE_CASE 

私はエラーにかなりの言い換えが、JBossは、ジャクソン・データバインド依存関係を見つけることができないようです。クラスが実際に配布されたWARファイルにあることを確認しました。これは、我々のPOMに持っているものです:私たちは私たちのコードベースにJavaクラスをコピーすると

<dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>2.8.9</version> 
    </dependency> 

、それはJBoss上で完璧に動作が、それは明らかに理想的ではありません。 JBossが以前に依存関係を見つけられないのを見た人はいますか?

+0

私たちはここで実際の解決策を見つけることになりました:https://stackoverflow.com/questions/37060294/wildfly-9-how-do-i-exclude-jackson – skylerl

答えて

0

ジャンパーdatabindはすでにJBossモジュールとして存在しています。したがって、アプリのデプロイメント中にlibの読み込みが競合したために例外が発生します。
より正確には、Jackson databindはバージョン2.5.4のjboss-eap-7.0\modules\system\layers\base\com\fasterxml\jackson\core\jackson-databind\main\にあります。したがって、依存関係を<scope>provided</scope>に設定する必要があります。
しかし、要求した2.5.4と2.8.9の間にいくつかの変更があります。あなたはJacksonの機能をあなたが使用しようとしているものに言及していませんが、少なくともそれは旧バージョンには存在しないので、SNAKE_CASEを使用することはできません。 1つの選択肢は、古いバリアントCAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORESにフォールバックできることです。それが受け入れられない場合は、jboss-deployment-structure.xmlを使用してJBossクラスのロードをカスタマイズする必要があります。この記述子を使用すると、JBossモジュールによって提供されるjacksonデータバインディングを除外することができます。そして、あなたの展開でjackson libをバンドルすることができます。 JBoss/Wildfly wikiに詳しい情報があります。

関連する問題