1. 程式人生 > >使用Intellij IDEA分析解決maven依賴衝突問題

使用Intellij IDEA分析解決maven依賴衝突問題

問題描述

為了做匯出資料到Excel功能,引入了easypoi的dependency,啟動後,報出了以下錯誤:

Caused by: java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.ClassMetadataReadingVisitor has interface org.springframework.asm.ClassVisitor as super class

在網上找到的答案如下,簡單說就是jar包版本不一致,衝突了!

3.0.6中,ClassVisitor 是一個介面(interface ClassVisitor),而在3.2.0中,ClassVisitor變成了抽象類(abstract class ClassVisitor)。為了解決這一問題,最好的辦法就是版本一致,也就是所有spring的包,最好是同一個版本,或同一階段的版本。

解決步驟

1. 開啟pom.xml檔案,依次選擇Maven -> Show Dependencies...


結果顯示如下,樹狀的依賴關係,和dependency:tree命令結果一致,只不過是更形象的圖形化介面。


依賴關係圖

2. 從之前的分析知道,org.springframework.core和org.springframework.asm不相容(Incompatible),按Ctrl + F,輸入關鍵字asm,回車檢視結果。


查詢衝突的依賴


依賴

這裡,spring-asm使用的是3.1.1.RELEASE版本,而spring-core使用的是4.3.8.RELEASE版本,版本不一致!可能有讀者要問了,spring-core明明也是3.1.1.RELEASE版本。這裡其實maven有個依賴選擇原則“路徑最短優先”,easypoi-web依賴spring-core的4.3.8版本,同時也依賴spring-webmvc -> spring-core3.1.1版本,按照該原則,優先選擇4.3.8版本的spring-core,這也就解釋了為啥兩者不一致了。

其實從圖中也可直觀的看出,虛紅線,表示該依賴其實是指向了另外的一個版本;實紅線,表示該依賴其實有多個不同的版本(點選即可顯示虛紅線)。

3. 知道了問題根源,也就好解決了:右擊spring-asm,選擇Exclude即可,表示將spring-asm從easypoi-web專案的類路徑中移除掉。


此時,回到pom.xml中,會發現,多了exclusions標籤,將spring-asm從依賴中排除掉了。


至此,問題解決!

轉載自:https://baijiahao.baidu.com/s?id=1583991534087303439&wfr=spider&for=pc

相關推薦

使用Intellij IDEA分析解決maven依賴衝突問題

問題描述 為了做匯出資料到Excel功能,引入了easypoi的dependency,啟動後,報出了以下錯誤: Caused by: java.lang.IncompatibleClassChangeError: class org.springframework.c

IDEA解決Maven依賴衝突

一:問題背景.     Maven依賴使用方便,但是出現了依賴衝突後,一般如何解決吶?本文將以IDEA為開發工具介紹一下.            &

分享知識-快樂自己:idea解決maven衝突的問題(maven helper)

小編說到: 在我們日常開發當中常常我們會遇到JAR包衝突。找來找去還找不到很是煩人。那麼所謂的JAR包衝突是指的什麼那?JAR包衝突就是-引入的同一個JAR包卻有好幾個版本。 例如:   專案中引用了兩個 fastjson.jar的版本,分別為:fastjson:1.2.28、 fastjson:1.2.3

Intellij Idea使用-解決匯入maven project包依賴問題

原文章出處:http://blog.csdn.NET/skyhsu/article/details/8534320 用Intellij Idea (version: 12U)匯入maven project後,發現external libraries裡沒有那些jar包,一

Idea解決maven依賴衝突問題

拿我遇到的問題來說一下,公司的專案,使用elasticsearch做索引,在實際專案啟動中它的Netty4Utils工具類初始化,所用到的類報NoSuchMethodError。直接搜尋一下這個類,發現在專案下起碼引入了三個版本的netty,分別是:4.0.24、4.029、4.1.7。我查了具體在使用net

解決IntelliJ IDEA 創建Maven項目速度慢問題

blog mave maven項目 解決方案 文章 tell type intellij intern IntelliJ IDEA 創建maven項目速度很慢,甚至卡住不動了。 解決方案一 在創建Maven項目時加上 archetypeCatalog=internal 參數

解決IntelliJ IDEA 創建Maven項目速度慢問題 DarchetypeCatalog

cal tail detail type http local TP ref ide 解決IntelliJ IDEA 創建Maven項目速度慢問題 DarchetypeCatalog 學習了:https://www.cnblogs.com/del88/p/6286887.h

maven依賴衝突解決方案

1. 傳遞依賴   1.1 什麼是傳遞依賴     如果A依賴於B,B依賴於C,則稱B是A的直接依賴,C是A的傳遞依賴   1.2 傳遞依賴衝突     如A依賴於B,B依賴於C(1.1版本),同時A依賴於D,D也依賴於C(2.1版

maven依賴衝突解決辦法

  一般的開發,maven依賴衝突基本不存在,但是如果專案多,依賴複雜,就說不定了。依賴衝突說明專案依賴的某一個jar包,有多個不同的版本,至少兩個或兩個以上,對於這種問題,最直接的就是通過修改專案依賴的版本為最新的版本即可。同時,也有另一種解決辦法,就是將傳遞依賴剪除掉(低版本的那個依

Maven依賴衝突解決 及 常見錯誤

Maven依賴衝突解決及常見錯誤 Web工程依賴 兩個不同的maven專案,依賴同一個artifactId但是版本不同,這時候就會產生maven的jar依賴衝突問題! 排除依賴 <dependencies>

Maven依賴衝突Maven jar包衝突問題排查及解決方案

前言 寫這篇文章的初衷是因為今天在使用mvn dependency:tree命令時,突然想起一年前面試阿里的一道面試題。面試題是說假設線上發生JAR包衝突,應該怎麼排查?我那時候的回答是IDEA有個Maven Helper的外掛,可以幫忙分析依賴衝突,然後還有一種辦法是如果

idea解決gradle依賴衝突的問題

題主進行原有專案介面遷移新專案的時候遇到了如下問題:執行gradle clean build是成功的但是啟動main函式就是不成功,在這裡樓主用的是springboot的main函式啟動方法2018-06-06 16:04:43.060 [Tomcat-startStop-1

Intellij Idea無法更新maven外掛索引的解決

最近在學習Spring+Spring MVC+MyBatis的時候,需要使用Maven來構建專案,而我使用的IDE為Intellij Idea。在新增maven依賴的時候,預設情況下並沒有補全。在網上搜索了一下,需要先更新maven repository的索引之

Intellij IDEA創建maven項目無java文件問題

按鈕 ans images nal idt http gin 文件 width 1.解決之前項目結構如下: 2.選擇File->Project Structure... 3.選擇Modules選項卡下面的Sources項,在main文件夾上右鍵,選擇New Fol

使用IntelliJ IDEA 15和Maven創建Java Web項目(轉)

java代碼 version tel 唯一性 ase pid clas ear 如何配置 1. Maven簡介 相對於傳統的項目,Maven 下管理和構建的項目真的非常好用和簡單,所以這裏也強調下,盡量使用此類工具進行項目構建, 它可以管理項目的整個生命周期。

使用IntelliJ IDEA 16和Maven創建java web項目

artifact 網上 tomcat 成功 .org 9.png nis tin ini 安裝Maven 下載安裝 去maven官網下載最新版。 解壓到安裝目錄。 配置 右鍵桌面的計算機圖標,屬性–>高級系統設置–>環境變量,添加M2_HOME的環境變量,然後

IntelliJ IDEA 17和Maven構建javaWeb項目

intellij ron images 配置 source 基於 nag 如果 簡單 前言   電腦又斷電了,眼看著寫好的東西就沒有了,這是第二次犯這個錯誤了。很難受呀!還是回到正題吧,我們來使用IDEA和Maven構建一個JavaWeb項目   軟件環境:     

IntelliJ IDEA強制更新Maven的包

tel tin lib 直接 gpo 如果 intel tell 全選 1、手動刪除Project Settings裏面的Libraries內容,【Ctrl】+【Alt】+【Shift】+【S】,全選之後點擊左上角的減號按鈕。 2、在Maven Project的試圖裏的L

IntelliJ IDEA 創建maven管理的webapp項目

單獨 strong nbsp finish fin 需要 最終 技術 輸入 因為使用框架時基本需要使用maven管理項目,所以單獨寫一個搭建maven項目的流程 第一步: File-->New--Project 第二步: 選擇maven框架 第三步: 輸入工

IntelliJ IDEA添加MAVEN插件

org tell tor 添加 posit read repo code MF 打開 File → Other Settings → Default Settings 修改MAVEN默認的地址,重新選擇配置文件 ☆特別註意,在配置的時候一定要選擇 Default Sett