项目详情: X-project使用asm.asm-2.2 cglib 2.2版本 Y-project使用spring-asm 2.x和cglib 2.2.0.b2 X项目作为依赖项包含在Y项目中 以上项目使用apache-ivy和apache ant 1.7.0 JDK 1.8
背景: -
Y项目最初是使用JDK 1.6编译的,而X项目最初是使用JDK 1.5编译的。 现在Y项目需要在JAVA 1.8中编译和运行。使用JDK 1.8成功编译了Y项目。 Y项目现在使用X项目,该项目在JDK 1.5中编译。 asm和spring-asm jar的版本未被修改
问题陈述: - 在运行Y-project的junit(版本-3.8.1)测试时,会发生字节码mismtach错误。即分支目标68处的预期stackmapframe
原因(在stackoverflow中搜索)如下: - asm.asm jar,用于处理X项目的stackmap帧和字节码。
怀疑是 - Y项目使用spring-asm来帮助启动bean,然后访问X项目的类。由于X项目的类已经有asm.asm 2.2 jar定义的stackmap框架,y项目的spring asm创建的字节码与X项目的项目不匹配
我尝试了以下方法: - 1.在X项目中将asm.asm jar的版本更改为5.0.3,但没有更改X项目使用的cglib版本 2.没有改变Y项目使用的spring-asm的版本 3.当使用Java 1.8编译X项目并尝试运行其Junit测试类时,cglib 2.2 jar的X项目抛出了类未找到错误 - 即,它试图在asm 5.0.3版本中找到一个类
请告诉我在上述场景中需要在X和Y项目中使用哪些版本的jar-asm,spring-asm和cglib