精华内容
下载资源
问答
  • maven版本冲突解决

    2021-01-13 16:24:40
    例如将Project B集成到Project A上,Project B这部分的代码始终跑不过,不是跳出来找不到某个就是在中又找不到某个方法,但是去本地依赖jar包对应版本查看的时候又是有这个方法或者是的。如果你仔细跟代码就会...

    maven多版本冲突解决

    以下将以fabric-sdk-java依赖jar包进行说明。例如将Project B集成到Project A上,Project B这部分的代码始终跑不过,不是跳出来找不到某个类就是在类中又找不到某个方法,但是去本地依赖jar包对应版本查看的时候又是有这个方法或者是类的。如果你仔细跟代码就会发现Project B依赖jar包版本并不是自身依赖的版本,而是跳转到了Project A所依赖的jar包版本去了。依赖相同版本不相同,所以有少部分的类或者方法是有出入的。而我所遇到的就是Project B所依赖fabric-sdk-java的jar包里面又依赖了其他的jar包,而依赖的这个jar包有些依赖的版本和Project A依赖的一些jar包产生冲突,具体解决办法看下面。
    

    解决办法:

    • 使用exclusion将冲突的版本给剔除掉。

      • 这个大多只适用于一个project下进行操作。在两个版本都不影响工程的情况下剔除一个版本即可。
    • 使用maven-shaded-plugin进行全依赖打包。

      • 这种情况适用于不同的工程运用相同依赖的不同版本。比如:在project A中依赖了某个版本的netty-all.1.4.17.jar,而fabric依赖的是nettty-all.1.4.43.jar。这个时候两个版本都不能剔除,剔除了版本1.4.17则projectA跑不起来,剔除了1.4.43版本则fabric也会出问题,这个时候就需要对fabric进行重定向打包了,具体步骤如下。

      • 步骤1:在git全局搜索fabric-sdk-java,会跳出来hyperledger/fabric-sdk-java,具体依赖具体而定。

      • 步骤2:点击进去选取你想要的版本并将源码克隆下来。

      • 步骤3:在pom文件里面添加maven-shade-plugins相关代码,如下。

           <build>
             <plugins>
             	     <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-shade-plugin</artifactId>
                        <version>3.2.1</version>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <goals>
                                    <goal>shade</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
             </plugins>
           </build>
        
      • 步骤4:打包(1. 如果是idea则在右侧maven工程下对应plugins会有一个shade:shade,点击即可打包。2.其他则在控制运行mvn clean package命令进行打包即可)。

      • 注意:如果对fabric-sdk-java进行依赖打包,运行项目还会报找不到某个类或者方法,那就对这个类或者方法相关的包进行重定向即可,相关参考代码如下。

         <build>
             <plugins>
             	     <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-shade-plugin</artifactId>
                        <version>3.2.1</version>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <goals>
                                    <goal>shade</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <filters>
                                <filter> //过滤掉一些重复的依赖
                                    <artifact>*:*</artifact>
                                    <excludes>
                                        <exclude>META-INF/*.SF</exclude> 
                                        <exclude>META-INF/*.DSA</exclude>
                                        <exclude>META-INF/*.RSA</exclude>
                                    </excludes>
                              </filter>
                            </filters>
                            <createDependencyReducedPom>true</createDependencyReducedPom>
                            <relocations>   
                                <relocation>
                                <pattern>org.bouncycastle</pattern> //将包名进行从定向
                                <shadedPattern>shaded.org.bouncycastle</shadedPattern>
                            </relocation>
                            <relocation>
                                <pattern>com.google.protobuf</pattern>
                                <shadedPattern>shaded.com.google.protobuf</shadedPattern>
                            </relocation>
                            <relocation>
                                <pattern>io.netty</pattern>
                                <shadedPattern>shaded.io.netty</shadedPattern>
                            </relocation>
                            </relocations>
                        </configuration>
                    </plugin>
             </plugins>
           </build>
        
      • 注意:将io.netty重定向过后,控制台可能会报在META-INF/native会报找不到shade_netty_tcnative_windows_x86_64.dll的库文件,对于这种情况直接进入依赖包对应的META-INF/native路径将.dll后缀的库文件修改为对应的库文件即可。比如netty_tcnative_windows_x86_64.dll改为shade_netty_tcnative_windows_x86_64.dll。没有则跳过。

    展开全文
  • #关于maven的jar包下找不到类的一种可能 严重: Exception starting filter jfinal-web java.lang.NoClassDefFoundError: com/alibaba/druid/pool/DruidDataSource at com.jfinal.plugin.druid.DruidPlugin.start...

    #关于maven的jar包下找不到类的一种可能

    严重: Exception starting filter jfinal-web
    java.lang.NoClassDefFoundError: com/alibaba/druid/pool/DruidDataSource
    at com.jfinal.plugin.druid.DruidPlugin.start(DruidPlugin.java:127)
    at com.jfinal.core.Config.startPlugins(Config.java:87)

    刚开始找不到这个类,很纠结,去找maven库是不是有问题,看到有是有jar包的,类名也是这个jar包里的删除了jar包,重新拉了一遍,看了看jar包又出现了

    一运行还是不行
    于是想是不是版本的问题,但是这个比较难验证放弃
    又看一下pom.xml

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.0.26</version>
        <scope>provided</scope>
    </dependency>
    

    发现了<scope>provided</scope>抱着试试的态度删了它,居然可以了
    查了下
    其实这个问题很简单。对于scope=compile的情况(默认scope),也就是说这个项目在编译,测试,运行阶段都需要这个artifact对应的jar包在classpath中。

    而对于scope=provided的情况,则可以认为这个provided是目标容器已经provide这个artifact。换句话说,它只影响到编译,测试阶段。在编译测试阶段,我们需要这个artifact对应的jar包在classpath中,而在运行阶段,假定目标的容器(比如我们这里的liferay容器)已经提供了这个jar包,所以无需我们这个artifact对应的jar包了。听起来很玄乎,对吧,其实一点也不难理解。举个scope=provided的例子。

    比如说,假定我们自己的项目ProjectABC 中有一个类叫C1,而这个C1中会import这个portal-impl的artifact中的类B1,那么在编译阶段,我们肯定需要这个B1,否则C1通不过编译,因为我们的scope设置为provided了,所以编译阶段起作用,所以C1正确的通过了编译。测试阶段类似,故忽略。

    展开全文
  • maven 检查依赖冲突版本冲突

    千次阅读 2018-12-27 19:07:36
    在项目发布的时候,一般都需要进行依赖冲突检查或者重复的检查,上面tree命令只能检查jar依赖的冲突能看到所有的的依赖关系,还有下面这个命令 enforcer:enforce 是用来检查重复的。 mvn -U clean ...

    当maven搭建的项目发生jar包依赖冲突时,可以使用下面命令进行处理:

     

    mvn -U dependency:tree -Dverbose
    
    
    在项目发布的时候,一般都需要进行依赖冲突检查或者重复类的检查,上面tree命令只能检查jar依赖的冲突,不能看到所有的类的依赖关系,还有下面这个命令 enforcer:enforce 是用来检查重复类的。
    
    mvn -U clean package -Dmaven.test.skip=true enforcer:enforce -DcheckDeployRelease_skip=true -Denforcer.skip=false
    
    
    
    

    dependency: tree是检查版本冲突的

    enforcer:enforce是用来检查重复类的

    简单地用 dependency:tree往往并不能查看到所有的传递依赖。不过如果你真的想要看所有的,必须得加一个 -Dverbose参数,这时就必定是最全的了。

    这样会产生大量日志信息,不便于查找,加上 Dincludes或者 Dexcludes,就会包含或者排除你指定的依赖了, dependency:tree就会帮你过滤出来:比如:

    mvn dependency:tree -Dverbose -Dincludes=asm:asm 就会出来asm依赖包的分析信息。

    展开全文
  • 首先检查一下自己的maven版本,我的版本是3.0的,maven版本过低可能会存在版本匹配找不到对应的版本库问题。建议升级3.0+以上的。 其次检查下自己的maven本地依赖的setting.xml文件,如图操作: IDEA-->file--&...

    首先检查一下自己的maven版本,我的版本是3.0的,maven版本过低可能会存在版本匹配找不到对应的版本库问题。建议升级3.0+以上的。

    其次检查下自己的maven本地依赖的setting.xml文件,如图操作:

    IDEA-->file-->setting... 搜索maven

    打开对应的xml文件,找到mirrors标签:

    将mirrorOf标签内替换为central。

    说明:这个代表如果在阿里镜像找不到的情况下去中央库找。

    修改或刷新。

     

    如果还是不行,请检查下自己的springCloud版本号, E版本可能与springboot版本有冲突,也会造成问题。可以参考我之前的文章查找对应的版本:https://blog.csdn.net/qq_33333654/article/details/103425035

    目前我在改版的是Finchley.SR2版本,该版本相对坑多,很多中maven央库中没有,目前已知的SR1都比这个稳定。解决办法就是添加对应的依赖版本号,比如gateway依赖就需要改为:

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-gateway</artifactId>
        <version>2.1.2.RELEASE</version>
    </dependency>

     当然还有其他的,这里推荐一个查询版本号的开源网站:

    https://www.mvnjar.com/org.springframework.cloud/spring-cloud-starter-gateway/jar.html

    展开全文
  • 它可以找到你maven工程中各种冲突(jar冲突类冲突,日志冲突版本冲突)。 我敢打赌, 我们一定知道过日志冲突。我们都知道,java的日志包多种,象log4j,logback,slf4j,通用日志,log4j-over-slf4j,slf4j-...
  • 使用Maven Helper解决Maven插件冲突

    千次阅读 2018-12-27 22:01:43
    1、何为依赖冲突 Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的。Maven的依赖机制会导致Jar包...这时候,Maven会将这1.0的C和2.0的C都下载你的项目中,这样你的项目中就存在了不同版本的C,这时Mav...
  • 使用Maven Helper解决Maven依赖冲突

    千次阅读 2020-07-29 19:02:19
    使用Maven Helper解决Maven依赖冲突 ...这时候,Maven会将这1.0的C和2.0的C都下载你的项目中,这样你的项目中就存在了不同版本的C,这时Maven会依据依赖路径最短优先原则,来决定使用哪个版本的Jar包
  • maven依赖jar包时版本冲突解决方案

    千次阅读 2020-06-30 16:26:51
    jar包版本是以groupId+artifactId为坐标的,在groupId+artifactId相同的情况下version不同代码不同的版本,一般都是version的不同导致的jar冲突。 同一个产品除非是大版本的升级,否则groupId+artifactId一般不会变...
  • 一.冲突问题 比如项目中引用了两个 ...我们用到了1.2.28中的某个, 比如 A,在版本更新中 1.2.3版本去掉了这个,然而我们项目中maven 却把1.2.3的 jar 打包进去了,那我们就会报异常,存在这个 class,但是...
  • 什么是Maven依赖冲突? 在解决冲突之前首先我们要知道什么是依赖冲突,这样可以更好的去锁定bug原因。下面通过一个代码示例来真正展示出依赖冲突。 1、添加依赖 <dependency> <groupId>org.spring...
  • 项目中需要临时在maven中导入一个本地的jar,开始是在maven中这样配置的:&lt;dependency&gt; &lt;groupId&gt;com.dtdream.dthink&lt;/groupId&gt; &lt;artifactId&gt;uim-mock-...
  • IDEA| 如何解决Maven的Jar版本冲突问题

    千次阅读 2019-09-03 19:15:42
    注意事项: 找不到打开依赖关系图的按钮? 一.前言 在实际项目开发过程中,会引用很多的依赖,由于依赖本身也有依赖,如果使用了不同的版本,就会很容易遇到jar包冲突问题,因此,解决jar包冲突问题就显得尤为重要。...
  • maven-MAVEN类冲突终极三大解决技巧

    千次阅读 2016-12-02 09:56:07
    Maven对于新手来说是《步步惊心》,因为它包罗万象,...Maven对于新手来说,最痛苦的一件事莫过于包之间的冲突,由于Maven的依赖传递性,当你引入一个依赖时,其身后的依赖也一起如过江之鲫纷至沓来了。 举例
  • maven排查jar包版本冲突

    千次阅读 2017-10-20 14:43:56
    因此,自动下载的jar包和已存在的jar包可能存在相同的jar包,但是版本不一致。此处就造成了冲突排查方法1、在命令行中,跳转项目路径。 2、先清除,再重新安装:mvn clean install. 3、查询依赖关系,并导入名...
  • 问题描述: 项目中用dubbo实现分布式远程调用服务,整合dubbo的时候,遇到一个Spring的错误,NoSuchMethodError的问题。由于导入了不同版本的jar包造成的。就是说,当我发布了一版2.0jar的时候里面有个我新写的...
  • maven依赖冲突以及解决方法

    千次阅读 2020-06-23 11:38:53
    首先查看产生依赖冲突jar,其次出我们想要的依赖jar,手工将其排除在外就可以了。具体执行步骤如下 1、查看依赖冲突 a、通过dependency:tree是命令来检查版本冲突 mvn -Dverbose depend
  • 解决方案: 以idea 操作为例, 打开maven依赖的图,确定要使用的jar的版本,将冲突的jar包给exclude maven版本以来的缘由 . 软件工程是多人合作的结果,我们在开发软件的时候经常会使用一些别人编写好的,比较成熟的...
  • Maven中 jar包冲突原理与解决办法

    万次阅读 多人点赞 2018-07-20 19:57:34
    Maven中jar包冲突是开发过程中比较常见而又令人头疼的问题,我们需要知道 jar包冲突的原理,才能更好的去解决jar包冲突的问题。本文将从jar包冲突的原理和解决两个方面阐述Maven中jar包冲突的解决办法。
  • Maven项目配置父子项目后子项目找不到依赖包的问题 自己做分布式市出现的问题,开始以为是jar包冲突 后来发现不是 解决办法如下
  • mvn dependency:tree的用法 一.参考文档 https://maven.apache.org/plugins/maven-d...
  • maven

    千次阅读 多人点赞 2018-07-11 16:03:00
    maven 什么是maven 什么是maven项目 pom.xml—— jar包的定位 仓库——jar包的存储 JUnit maven 什么是maven Maven的核心功能便是合理叙述项目间的依赖关系,通俗点讲,就是通过pom....
  • 一文看懂怎么解决Maven依赖冲突问题

    千次阅读 2019-08-20 17:33:11
    知道你在使用Maven时是否遇到过诸如"NoSuchMethodError"或"ClassNotFoundException"之的问题,甚至发生这些问题的Java你没都没有听说过。要搞清楚这里面的缘由,我们得学习Maven对依赖冲突的处理机制。 Maven...
  • 我是在连接oracle数据库时 在pom.xml里添加依赖后确认dependencies已经引入jar包,而项目运行时却报ClassNotFound多次尝试后,发现是因为在引入依赖时是复制以前的内容而忘记删除scope标签导致的 例如: 在maven的pom....
  • 当我们在maven项目中引入第三方组件时,三方组件中的依赖可能会与项目已有组件发生冲突。 比如三方组件中依赖httpclient的版本是4.5.x,而项目中已有的httpclient版本是3.1.x,那么此时就会产生一下两种情况: 如果...
  • 在 idea 界面的右上角找到下图 1 的地方,点击可以看到该项目下有个Dependencies的目录,他详细记录了我们引入了的jar包,当然这里是看不到依赖冲突的问题的 然后我们点击上图 3 的位置,打开下面这样一个依赖...
  • 有时候依赖会出现相同的artifact却不同版本,相互存在冲突,这时就需要exclude某个版本。 IntelliJ IDEA,该如何某个artifact的全部依赖关系? 该工具有个Maven Projects窗口,一般在右侧能够找到,如果没有可.....
  • eclipse解决maven的包冲突

    千次阅读 2019-11-19 21:07:24
    java的项目突然允许报错了,找不到java,估计是jar包冲突了 报错信息如下: 解决方法 1.打开pom.xml,如下图可以很容易看到冲突原因 2.右键低版本的jar包,排除即可 3.pom.xml中新增 <dependency> <...
  • maven snapshot的jar包中的类找不到

    千次阅读 2018-02-24 18:09:32
    maven管理项目的过程中碰到这样一个问题,引用同项目组的同事开发的第三方jar包,开发完成后编译也通过了,但是在启动的过程中,结果怎么都找不到引用的别人项目jar包下面所有的,引用的jar是snapshort包,在idea...
  • 来源:blog.csdn.net/sunpeng_sp/article/details/77393348日常开发中经常会遇到xxx.class 找不到的异常,但是这个确实存在我们的项目...
  • maven build 失败 “找不到符号” 排查

    千次阅读 2018-10-18 17:03:55
    在工作中除了自己代码本身的问题,在build是涉及一些maven环境问题,在本地的启动编译是好的,了测试环境docker之后就报如下错误: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,378
精华内容 14,951
关键字:

maven版本冲突类找不到