【发布时间】:2017-10-05 09:55:47
【问题描述】:
这个问题开始很奇怪: 我在我的应用程序中使用了 org.jsr107.ri 库。
当我使用 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-中有一个类javax.cache.CacheManager 1.9.57.jar 库。
当我从这个库中删除 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 interface。
这个问题有好的解决方案吗? 是否有没有 javax.cache(可能还有 javax.mail)库的 appengine-api-1.0-sdk-1.9.57.jar 文件?
【问题讨论】:
标签: java google-app-engine tomcat google-api