appengine-api-1.0-sdk-1.9.57.jar和cache-api-1.0.0.0.jar之间的冲突



这个问题开始奇怪:我在应用程序中使用了org.jsr107.ri库。

当我启动应用程序时,使用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.0.jar库中有一个接口Javax.cache.cachemanager,javax.cache.cache.cache.cachemanager在appengine-apemanager中1.9.57.Jar Library。

当我删除javax.cache。在加载类)中,我的应用程序开始工作正常,但是这个解决方案看起来很糟糕(对我来说)。

我打开了JSR107规范(http://download.oracle.com/otn-pub/jcach/jcache-1_0-fr-spec/jsr107finalspecification.pdf),发现该cachemanager interface interface 使用。

这个问题有很好的解决方案吗?是否有Appengine-api-1.0-sdk-1.9.57.jar文件,没有Javax.Cache(以及,可能是Javax.mail)库?

一年前也发生在我身上。问题是GAE不符合JCache。它支持拟议的JCache草案,但不确定最终。Google根据标准不更改和针对草案的实施。不幸的是,对于GAE的GAE粉丝的整个Java社区,GAE上的JCache实际上对我们没有用。

在您的appengine-web.xml中添加下面的标签

<class-loader-config>
  <priority-specifier filename="cache-api-1.1.1.jar"/>
</class-loader-config>

我面临着同样的问题,并通过上述解决。有关参考检查GCP页面。https://cloud.google.com/appengine/docs/standard/java/runtime

最新更新