开发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
分享到:
相关推荐
在Java开发中,Maven作为主流的构建工具,管理着项目的依赖关系。然而,当项目引入多个库时,可能会遇到依赖冲突的问题。依赖冲突通常发生在两个或更多库使用相同类的不同版本时,Maven默认会选择最高版本的依赖,但...
** Maven工程案例详解 ** Maven,作为Java项目管理和构建工具,通过定义项目的结构和依赖关系,使得构建、测试和部署过程标准化。本案例“第一个maven工程案例”旨在帮助初学者快速理解并掌握Maven的基本用法。下面...
Maven工程组织结构是Java开发中一个重要的概念,它定义了项目源码、资源、配置以及构建过程的标准布局。这种结构使得项目的管理和维护更加规范,提高了团队间的协作效率。以下将详细解析Maven工程的模块化目录结构...
【标题】:“Maven工程”是一个广泛使用的Java项目管理和构建工具,它简化了构建过程,通过依赖管理和项目对象模型(POM)的概念,使得开发者能够更有效地管理项目的构建、报告和文档。 【描述】:Maven是Apache...
7. **依赖管理和解决冲突**:Maven会自动下载并管理项目依赖,如果遇到版本冲突,可以通过指定依赖的exclusions或使用dependencyManagement来解决。 8. **仓库管理**:Maven使用本地仓库(默认在用户家目录的.m2...
- 如果已经存在多个独立的Maven工程,可以通过Idea的“File -> Open”菜单,一次性导入多个项目到同一个工作空间。 - 确保所有工程都在同一个工作目录下,Idea会自动识别它们为多模块工程。 2. **模块间的跳转** ...
【标题】"maven工程小例子"涉及到的是Java开发中的构建工具Maven的应用。Maven是一个项目管理和综合工具,它简化了构建、依赖管理和项目的生命周期。在Java开发中,Maven通过XML格式的配置文件(pom.xml)来管理项目...
本篇文章将详细讲解如何建立一个Maven工程。 首先,我们需要理解Maven的基本概念。Maven是基于项目对象模型(Project Object Model,POM)的,它通过POM文件来描述项目的信息,包括项目的配置、依赖关系、构建过程...
本文将详细讨论Java MAVEN工程pom配置报错的常见问题及解决方案。 **错误表现** 当pom.xml文件中的配置不正确时,Maven在执行`mvn compile`或类似命令时,会显示错误信息。典型的错误包括但不限于以下两种: 1. *...
它能够自动解决jar包依赖冲突,管理项目的依赖范围,并允许将依赖的jar包存放在仓库中,简化了项目的部署和分发过程。 3. **适用场景** Maven特别适合于Java语言的项目管理,它可以帮助开发者从繁琐的项目配置和...
首先,我们从最基础的Maven工程开始。Maven的项目对象模型(Project Object Model,POM)是其核心,它定义了项目的配置信息,包括依赖、插件、构建目标等。在分布式系统中,POM文件是不同服务之间协调的关键,因为它...
Maven构建项目发布到Tomcat的解决方案 Maven是一款流行的项目管理和构建工具,广泛应用于Java项目的开发和构建中。然而,在使用Maven构建项目时,可能会遇到发布到Tomcat服务器的困难,这是由于Maven的构建机制和...
本文将针对"关于Myeclipse使用mybatis出现Jar包冲突的解决办法"这一主题,详细解释如何解决这类问题。 首先,我们需要理解为什么会出现Jar包冲突。在MyEclipse中,可能由于内置的库或插件与我们手动引入的库之间...
标题提到的“java工程需要的工具包5.1.46用于解决8.0.11版本冲突”指的是MySQL Connector/J 5.1.46,这是MySQL官方提供的用于Java应用程序连接到MySQL数据库的驱动程序。 MySQL Connector/J是基于JDBC(Java ...
OSGi(Open Services Gateway Initiative)是一种模块化系统和Java服务框架,它允许在单个JVM上运行多个版本的相同库或服务,从而解决了不同版本jar包冲突的问题。本示例通过一个名为“myself”的工程,展示了如何...
5. Maven工程依赖下载失败错误解决 当Maven无法下载依赖时,可以检查网络、镜像配置、pom.xml的正确性,或者手动下载jar包放到本地仓库。 6. Maven工程Build构建配置 build部分配置了编译、测试、打包等相关设置,...
在Java开发中,各种库和框架的依赖关系复杂,Maven通过pom.xml文件来定义项目依赖,自动下载所需的jar包,并且能处理依赖的版本冲突。此外,Maven还提供了构建生命周期,包括清理、编译、测试、打包、验证、部署等一...
首先,我们来讨论第一个问题:maven工程在Tomcat部署后,WEB-INF下没有lib目录。这通常是由于Maven配置不正确导致的,使得Maven没有正确地将依赖打包到WAR文件中。要解决这个问题,可以按照以下步骤操作: 1. 右键...
1. **依赖管理**:自动解决jar包冲突,通过声明依赖关系,Maven会自动下载并管理所需的库。 2. **构建工具**:编译、测试、打包、部署等一系列构建任务,只需简单命令即可执行。 3. **插件丰富**:Maven拥有大量插件...
在IT行业中,Maven是一个非常重要的构建工具,主要用于Java项目的管理。它简化了构建过程,通过依赖管理和项目信息管理,使得开发团队能够高效地构建、测试和部署项目。本篇文章将详细探讨"Maven搭建、集成,创建...