2017-10-05 7 views
0

この問題は奇妙になり始めました。 私のアプリケーションでorg.jsr107.riライブラリを使用しました。appengine-api-1.0-sdk-1.9.57.jarとcache-api-1.0.0.jarとの間の競合

私はGradleのを使用して、自分のアプリケーションを起動したとき、すべてが大丈夫だったが、私は戦争のファイルを構築し、私のTomcatサーバー上に展開したとき、私は例外だ:、いくつかの調査の後

java.util.ServiceConfigurationError: javax.cache.spi.CachingProvider: Provider org.jsr107.ri.spi.RICachingProvider could not be instantiated ... Caused by: java.lang.IncompatibleClassChangeError: Implementing class

は、私は、cache-api-1.0.0.jarライブラリにjavax.cache.CacheManagerインタフェースがあり、appengine-api-1.0-sdk-1.9.57.jarライブラリにjavax.cache.CacheManagerというクラスがあることがわかりました。

このライブラリからjavax.cache。*を削除したとき(またはappengine-api-1.0-sdk-1.9.57.jarの名前をzappengine-api-1.0-sdk-1.9.57.jarに変更してクラスの読み込み順序)、私のアプリケーションはうまく動作し始めましたが、このソリューションはひどい(私のために)見えます。

JSR107仕様(http://download.oracle.com/otn-pub/jcp/jcache-1_0-fr-spec/JSR107FinalSpecification.pdf)を開き、CacheManager インターフェイスを使用する必要があることがわかりました。

この問題の良い解決策がありますか? javax.cache(およびおそらくjavax.mail)ライブラリのないappengine-api-1.0-sdk-1.9.57.jarファイルはありますか?

答えて

0

1年前にも私に起こった。問題は、GAEはJCacheに準拠していないことです。 JCacheのリリース予定ドラフトをサポートしていますが、最終版はサポートしていません。 Googleは、ドラフトに対して変更して実装していない標準で銀行業務を行っている。残念ながら、GAEファンのJavaコミュニティ全体にとって、GAEのJCacheは効果的に役に立たない。

関連する問題