热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【原】Maven解决jar冲突调试步骤:第三方组件引用不符合要求的javassit导致的相关异常

【环境参数】开发框架:Spring+MyBatis+SpringMVC+KettleJDK版本:1.8.0_91javassist依赖版本:javassit-3.12.1.GA【

【环境参数】
开发框架: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.(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”这个依赖,因此,如何找到项目依赖的所有的Jar包中,哪一个Jar包引用了“javassist.3.12.GA”,就成了急需解决的问题

 

【解决方案】
Step 1:定位原系统中哪个第三方Jar包引用了“javassist.3.12.GA”。
(1)将目录切换到原系统POM.xml所在目录。

(2)打开cmd命令行窗口,执行命令"mvn dependency:tree > 1.txt"该命令会分析POM.xml文件中元素所包含的所有Jar包中,每一个Jar包引用其他Jar包的目录树,并且将这些信息打印到"1.txt"文件中,如下图所示。

通过分析“1.txt”文件得知,“javassist.3.12.GA”这个版本的Jar包是原系统中 “scannotation.jar”包引用的,此时,需要将javassit-3.12.1.GA这个Jar包去掉,为原系统添加一个新的javassit-3.18.2.GA包。

Step 2:从Jar包中去除javassist-3.12.1.GA

    由于已经定位了javassist-3.12.1.GA是被系统的scannotation组件所引用,所以我们直接让scannotation组件在打包时自动过滤掉javassist-3.12.1.GA即可。

 1 <dependency>
 2     <groupId>org.scannotationgroupId>
 3     <artifactId>scannotationartifactId>
 4     <version>1.0.3version>
 5     
 6         
 7             javassist
 8             javassist                    
 9         
10     
11 dependency>

Step 3:添加javassit-3.18.2.GA这个新的GAV

1 <dependency>
2     <groupId>org.javassistgroupId>
3       <artifactId>javassistartifactId>
4       <version>3.18.2-GAversion>
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


推荐阅读
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 本文详细介绍了 Flink 和 YARN 的交互机制。YARN 是 Hadoop 生态系统中的资源管理组件,类似于 Spark on YARN 的配置方式。我们将基于官方文档,深入探讨如何在 YARN 上部署和运行 Flink 任务。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文探讨了如何在 PHP 的 Eloquent ORM 中实现数据表之间的关联查询,并通过具体示例详细解释了如何将关联数据嵌入到查询结果中。这不仅提高了数据查询的效率,还简化了代码逻辑。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 本文探讨了 Spring Boot 应用程序在不同配置下支持的最大并发连接数,重点分析了内置服务器(如 Tomcat、Jetty 和 Undertow)的默认设置及其对性能的影响。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文详细介绍了如何准备和安装 Eclipse 开发环境及其相关插件,包括 JDK、Tomcat、Struts 等组件的安装步骤及配置方法。 ... [详细]
author-avatar
EMBRACE-老王
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有