我的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”库。
如何解决此问题?
答案 0 :(得分:108)
正如@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
请注意,从Spring Framework 4.0开始,完全支持Java 8字节码级别(-target 1.8,-source 1.8所需)。特别是,基于Spring 3.2的应用程序需要使用最多Java 7作为目标进行编译,即使它们恰好部署在Java 8运行时也是如此。请升级到Spring 4以获取基于Java 8的应用程序。
答案 1 :(得分:63)
如果使用-target 1.7进行编译时遇到此错误,请注意这是因为Spring Framework中的一个错误会导致ASM类读取器加载jdk类(java。*或javax。*),当然,用-target 1.8编译。
这与春季3.2.8及更低版本中的旧ASM版本相结合,不支持解析1.8类文件,也可能导致此错误。
有关此问题的更多信息,请访问:https://jira.spring.io/browse/SPR-11719
这应该在Spring Framework版本3.2.9中修复,该版本即将发布。
当然,升级到Spring Framework 4也将解决该问题,因为它已经包含更新版本的ASM。
但是,如果由于某种原因您无法升级到版本4,那么很快就会知道其他选择(很快)。
答案 2 :(得分:0)
如果使用java 8或下一版本,则需要升级spring版本,spring版本应为4.xxx
答案 3 :(得分:0)
我遇到了同样的问题并解决了。我正在Java 3中使用spring3.x。如果上述解决方案不起作用,请更改jar,并搜索这些jar是否与您使用的Java版本兼容。 spring 3.x与Java 8不兼容。
答案 4 :(得分:-2)
Spring 4可以用于java 8来解决这个问题。我只是测试它,它的工作原理。 自3.2.9-RELEASE。
以来,此问题已得到解决