【问题标题】:Unsupported class file major version 61不支持的类文件主要版本 61
【发布时间】:2022-11-08 18:51:05
【问题描述】:

我正在尝试将 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的版本是问题......

【问题讨论】:

  • 我从以下位置下载了文件glowroot-0.13.6-dist.zip发光根.org并查看了两个文件的类文件版本。两者都是 50,这意味着它们是用 Java 1.6 编译的
  • @StephenC 这只是来自glowroot 的捆绑ASM,它不知道如何处理该类文件版本。没有提供有关 JVM 版本的信息。
  • 问题出在哪里:ASM 试图访问 Java 17 类但不能。所以更新版本的glowroot解决了这个问题?
  • @StephenC 鉴于错误源于org.glowroot.agent.shaded.org.objectweb.asm.ClassReader,该版本的 ASM 更可能不支持类版本 61,而不是在 Java 17 上运行。ASM 需要了解类版本才能修改其字节码。

标签: java incompatibility java-17 glowroot


【解决方案1】:

(我在没有查看堆栈跟踪的情况下错误地将“不支持的类文件主要版本 61”消息归零。)

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

问:如何解决这个问题?

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


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

【讨论】:

    【解决方案2】:

    错误“不支持的类文件主要版本 61”仅表示 Java 17 不支持某些库。 阅读此内容以了解 - https://mkyong.com/java/java-unsupported-class-file-major-version-61/

    此错误上方的堆栈跟踪将告诉您是哪个依赖项。您需要将该依赖项升级到符合 Java 17 的依赖项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      • 2021-12-03
      • 1970-01-01
      • 2019-07-27
      相关资源
      最近更新 更多