开发java应用,包冲突是经常遇见的,如何快速的定位冲突,并且解决十分重要。
下面通过工作中的一个例子来引出一些排查的常用工具。
(1)查看某一个方法是引用的那个包,可以在debug的时候通过反射中的这个方法看一下
例如查看CollectionUtils这个类的jar包的信息,可以这样:
CollectionUtils.class.getProtectionDomain().getCodeSource();
(2)如何查看maven工程中的jar包的情况?
在maven工程的父目录来执行这个命令,显示全部工程的包的信息
mvn compile dependency:tree
可以通过">"来重定向到一个文件,方便来进行查看。
如果知道特定的子module,则可以进入到特定的module,来进行打印依赖树。
上面的例子。在web这个module下面,果然没有看到commons-collections这个jar包。
所以问题就定位了呵呵。
(3)如何解决冲突?
一般情况下问题定位了就能够很快的解决冲突了。
上述情况是因为没有引入jar包导致的,解决办法,直接在pom文件中加入jar包即可,当然这是最简单的包问题了。
其余的一般可以通过修改pom文件来进行解决,下面就pom文件解决冲突的几类常见方法说明一下。
maven的冲突解决需要对于maven的依赖机制了解比较深入,这样处理问题才能游刃有余,推荐一个博客,上面的文章很好,可以学习一下。
http://www.juvenxu.com/
还有博客作者的书《maven实战》上面写的很详细,对于maven入门以及深入了解很有帮助。
(4)线上的话如何来看代码的类的jar包的信息呢?
上面的一些方法能够解决大部分的问题,但是如果是线上出现这种情况,或者上面的方法没有办法查看到,那如何处理呢。
不用担心,公司的一位大神撒迦写了一个类,来搞定这些。
博客地址在这里:http://rednaxelafx.iteye.com/blog/1295944
代码和执行命令都在这里,有了这个之后,线上排查问题就能够非常方便了呵呵。
https://gist.github.com/1441625#file_command_prompt
分享到:
相关推荐
既能不升级jar包又能使用高版本依赖同时还不造成冲突的完美解决方案
通过jsp-api体验jar包之间的冲突 · 25.导入Maven工程 · 26.第三个Maven工程 · 27.依赖的传递性 · 28.依赖的排除 · 29.依赖的原则说明 · 30.依赖的原则测试 · 31.统一管理依赖的版本号 · 32.继承 ·...
此文章包含Maven介绍与安装、Maven在工程开发中的相关配置、Maven如何进行工程测试、Maven的以来冲突调节原则、Maven的聚合开发,以及用一个简单的实操案例对Maven进行练习。 适用于任何学习项目管理与SSM框架中,...
它可以找到你maven工程中各种冲突(jar冲突,类冲突,日志冲突,版本冲突)。我敢打赌,我们一定知道过日志冲突。我们都知道,java的日志包多种,象log4j,logback,slf4j,通用日志,log4j-over-slf4j,slf4j-over-...
本课程讲解Maven的项目构建、依赖传递、依赖冲突等本课程讲解Maven入门基础知识
通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化设计与原型制作: 对于UI/UX设计,有界面设计工具,如Sketch、Adobe XD,可以帮助设计师快速构建应用程序...
xml java系统源码 mountain 工程 后端工程启动后访问URL: ...Extension(Java管理应用扩展),默认是true,导致冲突 解决方法,在application-xxxx.properties文件中配置下边属性,进行区分: spring.
通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化设计与原型制作: 对于UI/UX设计,有界面设计工具,如Sketch、Adobe XD,可以帮助设计师快速构建应用程序...
通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化设计与原型制作: 对于UI/UX设计,有界面设计工具,如Sketch、Adobe XD,可以帮助设计师快速构建应用程序...
通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化设计与原型制作: 对于UI/UX设计,有界面设计工具,如Sketch、Adobe XD,可以帮助设计师快速构建应用程序...
通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化设计与原型制作: 对于UI/UX设计,有界面设计工具,如Sketch、Adobe XD,可以帮助设计师快速构建应用程序...
java版商城源码下载 4、工程结构 5、上报服务系统 5.1、Spring Boot 上报服务系统是一个 Java Web 工程,为了快速开发 web 项目,采用 JavaWeb 最流行的 Spring Boot。 Spring Boot 是一个基于 Spring 之上的快速...
通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化设计与原型制作: 对于UI/UX设计,有界面设计工具,如Sketch、Adobe XD,可以帮助设计师快速构建应用程序...
通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化设计与原型制作: 对于UI/UX设计,有界面设计工具,如Sketch、Adobe XD,可以帮助设计师快速构建应用程序...
通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化设计与原型制作: 对于UI/UX设计,有界面设计工具,如Sketch、Adobe XD,可以帮助设计师快速构建应用程序...
通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化设计与原型制作: 对于UI/UX设计,有界面设计工具,如Sketch、Adobe XD,可以帮助设计师快速构建应用程序...
通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化设计与原型制作: 对于UI/UX设计,有界面设计工具,如Sketch、Adobe XD,可以帮助设计师快速构建应用程序...
通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化设计与原型制作: 对于UI/UX设计,有界面设计工具,如Sketch、Adobe XD,可以帮助设计师快速构建应用程序...
通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化设计与原型制作: 对于UI/UX设计,有界面设计工具,如Sketch、Adobe XD,可以帮助设计师快速构建应用程序...
通过集成Git、SVN等版本控制系统,支持团队成员间的代码共享、分支管理、合并请求和冲突解决。 可视化设计与原型制作: 对于UI/UX设计,有界面设计工具,如Sketch、Adobe XD,可以帮助设计师快速构建应用程序...