java.lang.NoSuchMethodError的解決辦法
問題
NoSuchMethodError是一個執行時錯誤,在編譯時一般不會出現這個錯誤。
既然能成功編譯,就說明方法本身是存在的,方法所在的類也是存在的,而且都可以正常的引用到。
那麼為什麼還會出現這個錯誤?
原因
方法本身是存在的,方法所在類也是存在的,那麼在執行時還會出現這個錯誤,就只能說明執行時引用的類裡面沒有這個方法。
這說起來有點拗口,簡單的說,就是存在至少兩個類名一樣的類A和B,其中A有一個need方法,B則沒有這個方法。編譯時,編譯器發現依賴路徑下有需要的類A或者B,則編譯通過。
但是執行時,在要呼叫A.need()方法時,因為A和B同名,錯誤的呼叫了B.need()方法,這個方法本身是不存在的,自然就出現了NoSuchMethodError這個錯誤
解決辦法
通過分析可以發現,其實問題產生的根本原因是類有衝突,也就是存在多個滿足條件的類A,B,C..
這種情況一般出現在引用某個庫或者jar時,同時引用了多個版本而導致的。
解決辦法也簡單,找出丟擲NoSuchMethodError這個異常的類,然後找出包含這個類的所有Jar,然後保留正確的辦法,把其他的jar刪掉,就可以了。
如果不知道哪個是正確的jar,請使用程式設計師都會的:
排除大法
一個一個試過去
相關推薦
使用POI操作Excel時new XSSFWorkbook ()報錯java.lang.NoSuchMethodError解決方式
lin line java sts factor 出現 class padding test 使用最新的POI3.11時,在執行 Workbook workBook = new XSSFWorkbook ();這段代碼時出現錯誤: java.lang.NoSu
eclipse下執行wordcount報錯 java.lang.ClassNotFoundException 解決辦法
eclipse下執行wordcount報錯 java.lang.classnotfoundexception 解決辦法eclipse下執行wordcount報錯 java.lang.ClassNotFoundException17/08/29 07:52:54 INFO Configuration.depre
java專案啟動時,java.lang.StackOverflowError 解決辦法
之前做的一個專案,一切正常。有天在啟動時,突然報錯了。 報錯資訊如上 看日誌猜測是資料庫連線池爆了,然後改資料庫連線池配置,沒有用。 一想到是棧溢位,想可能是記憶體小了,重新分配idea、tomcat記憶體,沒有用。 然後去百度,別人都說是遞迴等方法層級太深,可是我
java.lang.SecurityException解決辦法
Exception in thread "main" java.lang.SecurityException: invalid SHA1 signature file digest for com/microsoft/sqlserver/jdbc/SQLServerExce
java.lang.String cannot be cast to java.lang.Integer解決辦法
今天寫SSM框架時候,後臺介面報錯,控制檯輸出java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer,如下圖: 報錯原因是因為型別轉換錯誤,不能將String型別轉化成Intege
java.lang.IllegalStateException解決辦法
一:java.lang.IllegalStateExceptionat org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1612)at org.apache.cat
java.lang.NoSuchMethodException: 解決辦法
在做專案得時候碰到了這個異常,最奇怪得地方是明明我就有這個方法 系統總是提示這個異常提示找不到這個方法, 最後才發現,我這個方法是這麼寫得 private String checkLogin(){ String flag = ERROR;
matlab中java.lang.outofmemoryError解決辦法
Matlab中呼叫weka時,常常出現Out of Memory現象,表明Java虛擬機器記憶體不夠用了.可以增加最大記憶體設定. 1. 查詢matlab根路徑.在matlab命令列中敲入:matlabroot 顯示根路徑,如:C:\Program Files\MATLAB
關於lib資料夾和報java.lang.NoClassDefFoundError解決辦法
1、在工程下新建lib資料夾,將需要的第三方包拷貝進來。或者直接放在libs下.2、將引用的第三方包,新增進工作的build path。3、(關鍵的一步)將lib設為原始檔夾source folder。如果不設定,則程式編譯可以通過,但執行的時候,會報: java.lang
java.lang.LinkageError解決辦法。
javax.faces.FacesException: java.lang.LinkageError: loader constraints violated when linking javax/el/ExpressionFactory class org.apache.
maven+ssm啟動Tomcat報錯 Could not publish to the server. java.lang.IndexOutOfBoundsException 解決辦法
1找到你maven安裝目錄D:\studys\apache-maven-3.5.3-bin\apache-maven-3.5.3\conf找到settings.xml開啟2,新增這段程式碼<mirror> <id>alimaven</id&
java.lang.NoSuchMethodError的解決辦法
問題 NoSuchMethodError是一個執行時錯誤,在編譯時一般不會出現這個錯誤。 既然能成功編譯,就說明方法本身是存在的,方法所在的類也是存在的,而且都可以正常的引用到。 那麼為什麼還會出現這個錯誤? 原因 方法本身是存在的,方法
記一次部署時報java.lang.NoSuchMethodError:javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax / persistence / ValidationMode;的解決辦法
樓主在部署war包的時候,本地啟動不報錯,伺服器商報如下問題: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfi
java.lang.NoSuchMethodError 錯誤的原因及解決辦法
不多說,先貼上錯誤 =========== 詳細: org.springframework.context.ApplicationContextException: Unable to start embedded container; nest
遇到 java.lang.NoSuchMethodError的解決辦法,路徑帶L
出現這樣的錯誤 java.lang.NoSuchMethodError: 解決辦法是把所有的maven清理,在重新install 還有所有jar包版本衝突,目前沒遇到過 裡面還有類會帶L 比如Lcom/taotao/pojo/string/ 這裡的L是正常情況,是反射就會
java.lang.NoSuchMethodError: com.google.common.collect.Sets.newConcurrentHashSet()異常解決思路
通過Spark-submit提交的任務丟擲了java.lang.NoSuchMethodError: com.google.common.collect.Sets.newConcurrentHashSet()Ljava/util/Set的異常,去網上搜了一下解決思路,大概有以下幾種
Spark 執行問題 java.lang.NoSuchMethodError: scala.Predef 解決方案
idea中如果遇到這種問題,一般查詢和spark匹配的scala版本就能解決 如果不能解決 請開啟專案的iml檔案,去掉不同版本的scala的orderEntry就能解決。 另在mac中通常會有問題no snappyjava in java.library.path 解決方案如下 1.
java虛擬機器常見錯誤 -- java.lang.OutOfMemoryError: Java heap space解決辦法
//首先檢查程式有沒有限入死迴圈 這個問題主要還是由這個問題 java.lang.OutOfMemoryError: Java heap space 引起的。第一次出現這樣的的問題以後,引發了其他的問題。在網上一查可能是JAVA的堆疊設定太小的原因。 跟據網上的答案大致
java.lang.NoSuchMethodError: org.springframework.beans.factory.xml...setEnviro問題解決方法
今天在用IDEA和maven整合struts2和spring的時候遇到已給蛋疼的問題,google了半天也沒找到答案,最後還是自己解決了。所以記錄一下,如果今後有人遇到,提供一種可能的解決方案。 首先我的pom.xml檔案中spring的依賴是這樣的 <properti
java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I 解決方法
出現的問題是struts裡面的 antlr-2.7.2.jar和hibernate 裡面的anltr-2.7.6.jar。將anltr-2.7.2.jar包刪除即可。 但如果匯入的是myeclipse包就需要將 antlr-2.7.2.jar 換成hibernate 裡