我刚刚升级到Apache Cayenne 4.0 M5,我收到以下错误:
线程“main”中的异常java.lang.NoClassDefFoundError: javax / cache / CacheManager at org.apache.cayenne.jcache.JCacheModule.configure(JCacheModule.java:44) 在 org.apache.cayenne.di.spi.DefaultInjector。(DefaultInjector.java:68) 在 org.apache.cayenne.di.DIBootstrap.createInjector(DIBootstrap.java:38) 在 org.apache.cayenne.di.DIBootstrap.createInjector(DIBootstrap.java:46) 在 org.apache.cayenne.configuration.CayenneRuntime。(CayenneRuntime.java:79) 在 org.apache.cayenne.configuration.server.ServerRuntime。(ServerRuntime.java:128) 在 org.apache.cayenne.configuration.server.ServerRuntimeBuilder.build(ServerRuntimeBuilder.java:234) 在 com.company.databases.postgresql.financedb.runtime.FinanceDBRuntime.getFinanceAccountsDBPostgreSQLRuntime(FinanceDBRuntime.java:11)
我所做的更改是从新的ServerRuntime(“configfile”)(已被标记为已弃用)更改为ServerRuntime.builder(“configfile”)。build()。并且...我使用Modeler重新生成所有类,更改为“Property.create(”...
我降级到M4,恢复了所有的变化,一切正常。
这是M5发布中的错误吗?或者我该如何解决这个问题?谢谢!
答案 0 :(得分:1)
简短回答 - 如果您不打算使用JCache,请从您的应用依赖项中删除cayenne-jcache-4.0.M5.jar
。
更长的答案 - Cayenne 4.0.M5具有模块自动加载功能。因此,无论何时在类路径上放置任何cayenne-*.jar
,它都会尝试在ServerRuntime中安装其扩展。具体来说,cayenne-jcache-4.0.M5.jar
尝试安装基于JCache的QueryCache,并且由于JCache库不可用,因此抛出了异常。
有关详细信息和其他M5更改,请参阅M5 UPGRADE.txt。