TomEE 8 不支持 class 文件主要版本 61

Unsupported class file major version 61 with TomEE 8

试图遵循其他类似问题的答案 here,不幸的是,无济于事。我们正在将我们的应用程序从 JAVA 7 升级到 JAVA 17。代码编译得很好,问题是当我们尝试 运行 apache-tomee 上的 .war 文件时-羽-8.0.8。 JAVA_HOME 设置正确: JAVA_HOME

以及路径: PATH

这是日志错误消息:

Caused by: java.lang.RuntimeException: Unable to read class definition for com.ui.AccountListLight$SubListDataModel

    at org.apache.xbean.finder.AnnotationFinder.readClassDef(AnnotationFinder.java:1180)

    at org.apache.xbean.finder.AnnotationFinder.<init>(AnnotationFinder.java:153)

    at org.apache.xbean.finder.AnnotationFinder.<init>(AnnotationFinder.java:166)

    at org.apache.openejb.config.FinderFactory$OpenEJBAnnotationFinder.<init>(FinderFactory.java:546)

    at org.apache.openejb.config.FinderFactory.newFinder(FinderFactory.java:267)

    at org.apache.openejb.config.FinderFactory.create(FinderFactory.java:80)

    at org.apache.openejb.config.FinderFactory.createFinder(FinderFactory.java:69)

    at org.apache.openejb.config.DeploymentLoader.addWebModule(DeploymentLoader.java:878)

    ... 46 more

Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 61

    at org.apache.xbean.asm9.ClassReader.<init>(ClassReader.java:189)

    at org.apache.xbean.asm9.ClassReader.<init>(ClassReader.java:170)

    at org.apache.xbean.asm9.ClassReader.<init>(ClassReader.java:156)

    at org.apache.xbean.asm9.ClassReader.<init>(ClassReader.java:277)

    at org.apache.xbean.finder.AnnotationFinder.readClassDef(AnnotationFinder.java:1176)

是的,我知道问题是我在 JAVA 17 上编译,而 TomEE 正试图在旧版本上 运行 它(可能是 JAVA 7,因为那是我之前安装的),但考虑到我在我的机器上删除了 JAVA 7 的所有 JRE/JDK 东西,而其中只有 JAVA 17,它是如何继续发生的?谢谢你的时间。

问题与 Java 无法读取您的 Java 17 编译的 classes 无关。查看堆栈跟踪,问题是 org.apache.xbean.asm9.ClassReader 无法读取您的 class 文件。这个特定的 ClassReader 是 TomEE 用来加载您的应用程序的一个。 TomEE 无法读取 Java 17 个应用程序也就不足为奇了,因为上次发布是在 8 月份,在 Java 17 出来之前。它本身是使用 Java 的旧版本编译的。希望 TomEE 的未来版本能够解决这个问题。