不支持 class 文件主要版本 61

Unsupported class file major version 61

我正在尝试将 Glowroot 集成到我的 Java 应用程序中。不幸的是,我收到以下错误:

2022-05-13 09:25:57.777 ERROR o.g.a.w.PointcutClassFileTransformer - Unsupported class file major version 61
java.lang.IllegalArgumentException: Unsupported class file major version 61
    at org.glowroot.agent.shaded.org.objectweb.asm.ClassReader.<init>(ClassReader.java:196)

Glowroot 和我的应用程序似乎都没有使用 gradle 所以我不知道这种不兼容性是从哪里来的。

您是否知道我如何找到不兼容的根源以及如何修复它?

谢谢!

编辑:我在版本 0.13.6 中使用 Glowroot。

第二次编辑:问题似乎是 glowroot 的版本...

(我没有查看堆栈跟踪就错误地关注了“不受支持的 class 文件主要版本 61”消息。)

问题(正如@Mark Rotteveel 所指出的)是 glowroot 在尝试使用 ASM 进行一些代码转换时失败。显然,glowroot 0.13.6 中捆绑的 ASM 版本中的 ClassReader 不理解版本 61 (Java 17) class 文件。

问:如何解决?

A:使用glowroot 0.14.0-beta.2或更高版本;参见 https://github.com/glowroot/glowroot/issues/906。或者,为 Java 的早期(目标)版本构建应用程序及其依赖项(根据需要),并在早期版本上构建(可能 1)运行共 Java.


1 - 这取决于代码转换是否涉及 ASM ClassReader 读取 Java SE classes.