【问题标题】:Java 1.8 ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yetJava 1.8 ASM ClassReader 无法解析类文件 - 可能是由于尚不支持的新 Java 类文件版本
【发布时间】:2014-03-20 07:54:33
【问题描述】:

我的 Web 应用程序在 JDK 1.7 上运行良好,但在 1.8 上崩溃,出现以下异常(在使用 Jetty 8 启动应用程序服务器期间)。我使用的是 Spring 版本:3.2.5.RELEASE。

例外:

org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yet

我认为问题的发生是由于它所依赖的 spring 和“asm.jar”库。

我该如何解决这个问题?

【问题讨论】:

  • 您是在将您的 webapp 编译为 Java 8 还是 Java 7?如果是 8,则应该可以编译面向 Java 7 的类,但仍可在 Java 8 下运行。
  • 如果你想以 Java8 为目标,你需要 Spring 4
  • 它编译为 1.7 但不支持 java 8 功能。所以在这种情况下使用 jdk 8 没有意义

标签: java spring java-8


【解决方案1】:

正如@prunge 和@Pablo Lozano 所说,如果您想将代码编译为 Java 8(--target 1.8),则需要 Spring 4,但如果您在 Spring 3.2 上运行,您仍然可以在编译为 Java 7 的 Java 8 上运行应用程序.X.

退房 http://docs.spring.io/spring/docs/current/spring-framework-reference/html/new-in-4.0.html

请注意,Java 8 字节码级别(-target 1.8,根据 -source 1.8 的要求)仅从 Spring Framework 4.0 开始完全支持。特别是,基于 Spring 3.2 的应用程序需要以最多 Java 7 作为目标进行编译,即使它们恰好部署到 Java 8 运行时。对于基于 Java 8 的应用程序,请升级到 Spring 4。

【讨论】:

【解决方案2】:

如果即使使用 -target 1.7 编译也遇到此错误,请注意这是由于 Spring Framework 中的错误导致 ASM 类读取器加载 jdk 类(java.* 或 javax.*),它们是,当然,用 -target 1.8 编译。

这个,再加上spring 3.2.8及以下的老ASM版本,不支持解析1.8的class文件,也会导致这个错误。

可以在此处找到有关此问题的更多信息:https://jira.spring.io/browse/SPR-11719

这应该在即将发布的 Spring Framework 3.2.9 版本中修复。

当然,升级到 Spring Framework 4 也会解决这个问题,因为它已经包含了更新版本的 ASM。

但是,如果由于某种原因您还不能升级到第 4 版,那么很高兴知道有替代方案(很快)。

【讨论】:

  • 升级到 Spring 3.2.9 帮助了我。
  • 这应该是公认的答案,因为它清楚地解释了问题所在
  • Spring 3.2.5 有这个问题,改成 3.2.9 问题解决了。完美的答案。
  • 唷,很高兴我不需要升级到 Spring 4。很好的答案!
【解决方案3】:

我遇到了同样的问题并解决了。我正在使用带有 java 8 的 spring 3.x。如果上述解决方案不起作用,请更改 jar 并搜索这些 jar 是否与您正在使用的 java 版本兼容。 spring 3.x 与 java 8 不兼容。

【讨论】:

    【解决方案4】:

    如果你使用java 8或下一个版本,你需要升级spring版本,spring版本应该是4.xxx

    【讨论】:

      【解决方案5】:

      Spring 4 可用于 java 8 来解决此问题。我刚刚对其进行了测试,并且可以正常工作。 此问题自 Spring 3.2.9-RELEASE 版本起已修复。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-03-21
        • 1970-01-01
        • 1970-01-01
        • 2022-01-23
        • 1970-01-01
        • 2020-01-27
        • 1970-01-01
        相关资源
        最近更新 更多