spring Java 1.8 ASM ClassReader无法解析类文件-可能是由于尚不支持新的Java类文件版本

s4n0splo  于 2023-01-01  发布在  Spring
关注(0)|答案(6)|浏览(233)

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

例外情况:

第一个月
我假设这个问题是因为Spring和它所依赖的"asm.jar"库而发生的。
我该如何解决这个问题?

lrl1mhuk

lrl1mhuk1#

正如@prunge和@巴勃罗Lozano所说,如果您想将代码编译到Java8(目标1.8),那么您需要Spring 4,但是如果您运行的是Spring3.2.X,那么您仍然可以运行编译到Java7的Java8应用程序。
checkout 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运行时上。请升级到Spring 4以获得基于Java 8的应用程序。

tkclm6bt

tkclm6bt2#

如果您在使用-target 1.7编译时遇到此错误,请注意,这是因为Spring Framework中的一个bug导致ASM classreader加载jdk类(java.* 或javax.*),当然,这些类是使用-target 1.8编译的。
再加上spring 3.2.8及更低版本中的旧ASM版本不支持解析1.8类文件,也会导致此错误。
有关此问题的详细信息,请访问:https://jira.spring.io/browse/SPR-11719
这个问题应该在Spring Framework 3.2.9版本中得到解决,该版本将很快发布。
当然,升级到Spring Framework 4也可以解决这个问题,因为它已经包含了更新版本的ASM。
然而,如果由于某种原因你还不能升级到版本4,最好知道有一个替代方案(很快)。

voj3qocg

voj3qocg3#

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

vxf3dgd4

vxf3dgd44#

我也有同样的问题,
1.访问:
Maven-〉执行Maven目标-〉mvn清洁
它有帮助:)
2.缓存无效..

tyg4sfes

tyg4sfes5#

如果您使用java 8或下一版本,则需要升级spring版本,spring版本应为4.xxx

ruoxqz4g

ruoxqz4g6#

Spring 4可以用于Java 8来解决这个问题,我刚刚测试了一下,它工作正常,这个问题从Spring 3. 2. 9-RELEASE版本开始就得到了修复。

相关问题