【原】Maven解决jar冲突调试步骤:第三方组件引用不符合要求的javassit导致的相关异常
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【原】Maven解决jar冲突调试步骤:第三方组件引用不符合要求的javassit导致的相关异常,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2083字,纯文字阅读大概需要3分钟。
内容图文
![【原】Maven解决jar冲突调试步骤:第三方组件引用不符合要求的javassit导致的相关异常](/upload/InfoBanner/zyjiaocheng/1178/3e4abab9aab84e4a92cf63a6aecb037c.jpg)
【环境参数】
开发框架:Spring + MyBatis + SpringMVC + Kettle
JDK版本:1.8.0_91
javassist依赖版本:javassit-3.12.1.GA
【障碍再现】
在Kettle工具初始化时,抛出如下异常:
java.io.IOException: invalid constant type: 15
at javassist.bytecode.ConstPool.readOne(ConstPool.java:1090)
at javassist.bytecode.ConstPool.read(ConstPool.java:1033)
at javassist.bytecode.ConstPool.<init>(ConstPool.java:149)
at javassist.bytecode.ClassFile.read(ClassFile.java:737)
【问题原因】
上述异常的原因是JDK8与javassit-3.12.1.GA在进行AOP功能时,由于不兼而导致的。经过调查得知,需要将javassit-3.12.1.GA升级为javassit-3.18.以上版本即可解决该问题。
但此时发现“javassist.3.12.GA”这个依赖在系统的POM.xml中并没有对应的GAV配置,因此,导致无法删除或者修改 “javassist.3.12.GA”这个依赖。
【解决方案】
1、定位原系统中哪个第三方Jar包引用了“javassist.3.12.GA”。
在原系统POM.xml所在目录,使用命令mvn dependency:tree > 1.txt输出下引用的目录结构,并且在新输出的“1.txt”文件中找出引用“javassist.3.12.GA”的Jar包组件。
经过分析得知“javassist.3.12.GA”这个版本的Jar包是原系统中 “scannotation.jar”包引用的,此时,需要将javassit-3.12.1.GA这个Jar包去掉,为原系统添加一个新的javassit-3.18.2.GA包。
2、由于知道是那个包要去掉,所以我们直接让此jar包不参与打包。
1 < dependency > 2 < groupId >org.scannotation</groupId> 3<artifactId>scannotation</artifactId> 4<version>1.0.3</version> 5<exclusions> 6<exclusion> 7<groupId>javassist</groupId> 8<artifactId>javassist</artifactId> 9</exclusion>10</exclusions>11</dependency>
3、添加javassit-3.18.2.GA这个新的GAV
1 < dependency > 2 < groupId >org.javassist</groupId>3<artifactId>javassist</artifactId>4<version>3.18.2-GA</version>5</dependency>
【拓展:不兼容原因】
Java 8的最新更新版本update 11导致了一些第三方工具不兼容问题。该bug似乎由Java 8u11中的JVM字节码验证子系统发生变化而导致的。Java语言要求任何调用超类构造函数必须在第一次调用时进行,但Java早期版本中的字节码验证器并没有强制去验证,甲骨文公司开始考虑解决这一问题,但目前来看似乎影响了一些第三方工具。
【参考资料】
1.maven解决jar冲突调试步骤:http://blog.csdn.net/lk_blog/article/details/41554757
2. Java 8升级导致第三方工具不兼容:http://www.iteye.com/news/29231
【其他注意事项】
读者如要转载,请标明出处和作者名,谢谢。
本文地址:http://www.cnblogs.com/zjrodger/p/5641608.html
作者名:zjrodger
作者博客地址01:http://space.itpub.net/25851087
作者博客地址02:http://www.cnblogs.com/zjrodger
原文:http://www.cnblogs.com/zjrodger/p/5641608.html
内容总结
以上是互联网集市为您收集整理的【原】Maven解决jar冲突调试步骤:第三方组件引用不符合要求的javassit导致的相关异常全部内容,希望文章能够帮你解决【原】Maven解决jar冲突调试步骤:第三方组件引用不符合要求的javassit导致的相关异常所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。