1、引入jia包
<dependency>
<groupId>com.cainiao.wmp</groupId>
<artifactId>task-client</artifactId>
<version>1.1.7-ldl-SNAPSHOT</version>
</dependency>
2、本地启动报错如下
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.taobao.pandora.boot.loader.LaunchRunner.run(LaunchRunner.java:38)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalArgumentException: LoggerFactory is not a Logback LoggerContext but Logback is on the classpath. Either remove Logback or the competing implementation (class org.slf4j.helpers.NOPLoggerFactory loaded from file:/Users/caolei/Downloads/repository/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.jar). If you are using WebLogic you will need to add 'org.slf4j' to prefer-application-packages in WEB-INF/weblogic.xml: org.slf4j.helpers.NOPLoggerFactory
at org.springframework.util.Assert.instanceCheckFailed(Assert.java:696)
at org.springframework.util.Assert.isInstanceOf(Assert.java:596)
3、jar包依赖冲突解决
3.1 输出工程依赖关系
mvn dependency:tree
mvn dependency:tree -Doutput=jar包依赖树.txt
mvn dependency:tree -Dverbose -D outputFile=dependency_tree.txt
3.2单独查看该jar包依赖
mvn dependency:tree -Dverbose -Dincludes=org.slf4j:slf4j-nop
omitted for duplicate:有jar包被重复依赖
结合报错是org.slf4j存在使用冲突,排除该jar包
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>org.slf4j</artifactId>
</exclusion>
</exclusions>
4、使用命令说明
4.1 常用命令
https://blog.csdn.net/anita9999/article/details/106712163
mvn dependency:tree参数及其含义:在命令后面按照 -D参数名=参数值格式增加参数
参数意义
- appendOutput:是将输出追加到输出文件还是覆盖输出文件,默认值为:false。
- excludes,includes:通过逗号分离,格式[groupId]:[artifactId]:[type]:[version],支持通配符*
- outputFile:指定输出文件路径
- outputType:指定输出文件格式,默认text,还支持dot,graphml,tgf
- verbose:把artifact的每处依赖都详细显示出来,可用来查看冲突和重复的具体情况
输出工程依赖关系
mvn dependency:tree
重定向至文本文件
mvn dependency:tree -D outputFile=dependency_tree.txt
mvn dependency:tree -Dverbose -D outputFile=dependency_tree.txt
mvn dependency:tree -Dverbose -Dincludes=org.slf4j:slf4j-nop
4.2 jar包依赖关系含义
1)最后写着compile的就是编译成功的。
2)最后写着omitted for duplicate的就是有jar包被重复依赖了,但是jar包的版本是一样的。
3)最后写着omitted for conflict with xxxx的,说明和别的jar包版本冲突了,而该行的jar包不会被引入。比如上面有一行最后写着omitted for conflict with 3.4.6,那么该行的zookeeper:jar:3.4.8不会被引入,会引入3.4.6版本
4)最后写着version managed from 2.3 ;omitted for duplicate ,表示最终使用commons-pool2最终会使用2.4.2,拒绝使用中声明的2.3版本
5)最后写着version managed from 1.16.8 ;表示最终使用lombok:jar:1.16.22版本