【原】java(maven工程)包冲突解决办法
2013-07-11 09:52
459 查看
开发java应用,包冲突是经常遇见的,如何快速的定位冲突,并且解决十分重要。
下面通过工作中的一个例子来引出一些排查的常用工具。
(1)查看某一个方法是引用的那个包,可以在debug的时候通过反射中的这个方法看一下
例如查看CollectionUtils这个类的jar包的信息,可以这样:
CollectionUtils.class.getProtectionDomain().getCodeSource();
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/26/d525476f787e865fc0c8f5288e961b6a.jpg)
(2)如何查看maven工程中的jar包的情况?
在maven工程的父目录来执行这个命令,显示全部工程的包的信息
mvn compile dependency:tree
可以通过">"来重定向到一个文件,方便来进行查看。
如果知道特定的子module,则可以进入到特定的module,来进行打印依赖树。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/26/b80e9a43ea5c97c2c36a5661c09a9aba.jpg)
上面的例子。在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
下面通过工作中的一个例子来引出一些排查的常用工具。
(1)查看某一个方法是引用的那个包,可以在debug的时候通过反射中的这个方法看一下
例如查看CollectionUtils这个类的jar包的信息,可以这样:
CollectionUtils.class.getProtectionDomain().getCodeSource();
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/26/d525476f787e865fc0c8f5288e961b6a.jpg)
(2)如何查看maven工程中的jar包的情况?
在maven工程的父目录来执行这个命令,显示全部工程的包的信息
mvn compile dependency:tree
可以通过">"来重定向到一个文件,方便来进行查看。
如果知道特定的子module,则可以进入到特定的module,来进行打印依赖树。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/26/b80e9a43ea5c97c2c36a5661c09a9aba.jpg)
上面的例子。在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
相关文章推荐
- [Java][]Maven]mvn eclipse:eclipse导入jar失败、直接导入工程的问题解决办法
- eclipse新建maven工程却没有自动建立src/main/java资源解决办法
- [Java][]Maven]mvn eclipse:eclipse导入jar失败、直接导入工程的问题解决办法
- 多人开发Xcode工程冲突,打不开解决办法
- Maven导入工程出现的一些问题解决办法
- 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
- maven 工程启动找不到 Spring ContextLoaderListener 的解决办法
- 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
- 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
- MyEclipse导入工程(web项目显示为java项目解决办法)
- 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
- maven工程启动找不到Spring ContextLoaderListener的解决办法
- maven 工程启动找不到 Spring ContextLoaderListener 的解决办法
- maven 工程启动找不到 Spring ContextLoaderListener 的解决办法
- eclipse maven创建工程缺少目录的解决办法
- struts2开发javaWeb 项目时遇到jar包冲突问题的解决办法
- Maven编译出现“java.lang.OutOfMemoryError: Java heap space”问题及解决办法
- eclipse工程转maven工程出错的解决办法
- 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
- eclipse打包maven工程文件提示找不到tools.jar的解决办法