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