升级到 Apache Cayenne 4.0 的 Milestone 5 版本后出现错误

Errors after upgrading to Milestone 5 release of Apache Cayenne 4.0

我刚升级到 Apache Cayenne 4.0 M5,但出现以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/cache/CacheManager at org.apache.cayenne.jcache.JCacheModule.configure(JCacheModule.java:44) at org.apache.cayenne.di.spi.DefaultInjector.(DefaultInjector.java:68) at org.apache.cayenne.di.DIBootstrap.createInjector(DIBootstrap.java:38) at org.apache.cayenne.di.DIBootstrap.createInjector(DIBootstrap.java:46) at org.apache.cayenne.configuration.CayenneRuntime.(CayenneRuntime.java:79) at org.apache.cayenne.configuration.server.ServerRuntime.(ServerRuntime.java:128) at org.apache.cayenne.configuration.server.ServerRuntimeBuilder.build(ServerRuntimeBuilder.java:234) at com.company.databases.postgresql.financedb.runtime.FinanceDBRuntime.getFinanceAccountsDBPostgreSQLRuntime(FinanceDBRuntime.java:11)

我所做的更改是从 new ServerRuntime("configfile")(已标记为已弃用)更改为 ServerRuntime.builder("configfile").build()。并且...我使用建模器重新生成所有 类,更改为 "Property.create("...

我降级到 M4,恢复了所有更改,一切正常。

这是 M5 版本中的错误吗?或者我该如何解决这个问题?谢谢!

简短回答 - 如果您不打算使用 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