java.lang.NoSuchMethodError的通用解決思路

來源:互聯網
上載者:User

標籤:版本   中文意思   項目   war   except   exception   depend   enc   end   

  NoSuchMethodError中文意思是沒有找到方法,遇到這個錯誤並不是說依賴的jar包、方法不存在而找不到,這就類似於 ClassNotFoundException錯誤了,出現ClassNotFoundException錯誤也不一定是缺少依賴的jar、class,有可能是依賴的衝突,即引用了多次報錯Class的jar。

  那麼同樣道理,NoSuchMethodError出現經常是因為報錯的這個方法的類的jar包產生了衝突。

  明白了為什麼會出現這個錯誤後,我們再去解決這個錯誤。一般情況下,手動引入jar包(即非依賴管理工具),直接remove掉重複的jar包就OK了。

  我們關鍵說下 Maven項目出現這個問題了怎麼解決。

  是時候舉個栗子了:

    比如之前做的一個 Spring Boot 項目,做的過程中有個地方需要用到阿里dubbo jar包中的方法,引入依賴

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
</dependency>
  
   之後導致項目無法啟動,報錯為:
    Exception in thread "main" java.lang.NoSuchMethodError: org.springframework.core.annotation.
        AnnotationAwareOrderComparator.sort(Ljava/util/List;)V
   Ctrl+左鍵點入 dubbo這個依賴,發現dubbo也需要依賴Spring,而且和我項目中的Spring版本並不一樣,所以就產生了衝突,
解決這個的方法就是讓dubbo依賴的Spring不再再添加進項目的依賴,如下:    
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
</dependency>
這樣項目就可以正常啟動運行了。
 

  

java.lang.NoSuchMethodError的通用解決思路

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.