使用Dasho Jar在Java 17环境下混淆代码时遭遇类版本错误
解决Dasho 12.2.0 + Spring Boot 3.2.2代码混淆时的类版本错误
错误信息
Error: Error reading jar:file:/tmp/dasho-unwar49324873872.tmp/BOOT-INF/lib/spring-core-6.1.4.jar!/META-INF/versions/21/org/springframework/core/task/VirtualThreadDelegate.class: Class Version Error. Please recompile with a supported JDK or check for an update to DashO which supports the new version.
问题原因
Spring Boot 3.2.2依赖的spring-core 6.1.4采用了多版本JAR技术,内置了针对JDK21编译的VirtualThreadDelegate.class类文件(位于META-INF/versions/21目录下),而Dasho 12.2.0仅支持最高JDK17的类版本(版本号61.0),无法识别JDK21对应的类版本(版本号65.0),因此触发类版本错误。
解决方案
- 升级Dasho版本:直接将Dasho升级到13.0及以上版本,该版本已支持JDK21的类文件处理,能完美适配Spring Boot 3.2.2的依赖。
- 忽略JDK21特定类(临时方案):如果暂时无法升级Dasho,可在Dasho配置中添加过滤规则,忽略
META-INF/versions/21/org/springframework/core/task/VirtualThreadDelegate.class文件。注意:若项目中使用了虚拟线程相关功能,此方案可能导致功能异常,仅适用于未使用虚拟线程的场景。 - 降级Spring Boot版本:将Spring Boot降级到3.1.x系列,该版本依赖的spring-core不会包含JDK21的多版本类文件,Dasho 12.2.0可正常处理。
内容的提问来源于stack exchange,提问作者CoderAkki
相关产品推荐
相关产品推荐

