這個問題開始很奇怪: 我在我的應用程序中使用了org.jsr107.ri庫。appengine-api-1.0-sdk-1.9.57.jar和cache-api-1.0.0.jar之間的衝突
當我開始我的應用程序,使用gradle這個,一切都很好,但是當我建立了一個war文件並將其部署在我的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文件?