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 的未来版本能够解决这个问题。
试图遵循其他类似问题的答案 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 的未来版本能够解决这个问题。