Java例外:java lang NoSuchMethodError

如果查看錯誤消息java.lang.NoSuchMethodError,您可能會理解Java虛擬機正在嘗試向我們表明您調用的方法在類或接口中不可用。

您還可能在執行沒有公共static void main()方法的類時拋出此錯誤。要了解其背后的原因,請閱讀本文。

當您嘗試調用某個類中不再可用的方法時,那么在編譯時本身將顯示一條錯誤消息“找不到符號”。 因此,您可能會認為啟動程序或應用程序時會引發此錯誤。

我已經使用以下程序解釋了此問題背后的事實。

讓我們有一個如下的Nomethod和Pro1類,

方法類:

import java.util.*;class Nomethod{public static void main(String args[]){Pro1 s=new Pro1();s.display();}
}

Pro1類別:

class Pro1{public void display(){System.out.println("I am inside display");}
}

當您執行該程序時,它可以正常工作而不會顯示任何錯誤。現在看看當我按如下方式更改Pro1類并單獨編譯該類時會發生什么。

范例1:

class Pro1
{
}

范例2:

class Pro1{public int void display(){System.out.println("I am inside display");return 1; // for example i have included a statement  like this}
}

現在,如果您執行類Nomethod而不重新編譯它,那么在運行時此java.lang.NoSuchMethodError將使您感到尷尬。

1.如果如示例1所示更改類Pro1,則將拋出此異常,因為該類中沒有可用的方法display()。

2.如果考慮使用Example2,則會引發此錯誤,因為方法display()的簽名已更改。

如果您理解了這些示例,那么您可能已經理解了執行沒有main()方法的類時引發此錯誤的原因。 真正的事實是“與現有二進制文件(類)的二進制兼容性已被新的二進制文件(修改后的類)損害了”。

“當您更改方法的簽名或刪除特定類中的方法時,并單獨對其進行編譯,那么其他調用該方法的類將不知道該方法的狀態,從而導致在運行時拋出此錯誤-時間。

同樣的情況也適用于接口,“那時,如果您嘗試更改方法的簽名或刪除接口中的方法”,也會拋出此異常。

有什么解決方案?

“如果您重新編譯了另一個類,則該類將在該類或接口中調用此修改的方法或已刪除的方法”,則此錯誤將在編譯時顯示,您可以執行必要的步驟來解決它。

注意:考慮到這種情況,即使您重新編譯該類,情況也可能變得更糟,您將不會收到此錯誤的提示。

舉例來說,您在項目中包含了較舊版本的軟件包,并將其放置在擴展庫中。您還擁有了較新的軟件包(其中方法的簽名已更改),并且您已經包含了該軟件包在課程路徑中。

編譯類時,編譯器將在擴展庫和引導程序庫中搜索類以解析引用,但Java虛擬機僅在已指定的類路徑(對于第三方庫)中搜索。

因此,在您的應用程序中使用新程序包時,請確保已修改了與舊版本相關的設置,并閱讀了新程序包的文檔以了解此程序包中所做的更改。

參考:來自Java錯誤和異常博客的JCG合作伙伴 Ganesh Bhuddhan提供的java.lang.NoSuchMethodError 。


翻譯自: https://www.javacodegeeks.com/2012/08/java-exception-java-lang.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372188.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372188.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372188.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【圖】最短路徑——Floyed算法和Dijkstra算法

最短路徑問題(floyed.cpp dijkstra.cpp) 題目描述平面上有n個點(n<100)&#xff0c;每個點的坐標均在-10000&#xff5e;10000之間。其中的一些點之間有連線。若有連線&#xff0c;則表示可從一個點到達另一個點&#xff0c;即兩點間有通路&#xff0c;通路的距離為兩點間的…

java的empty_Java Stack empty()方法與示例

堆棧類empty()方法empty()方法在java.util包中可用。empty()方法用于檢查此堆棧是否為空。empty()方法是一個非靜態方法&#xff0c;只能通過類對象訪問&#xff0c;如果嘗試使用類名稱訪問該方法&#xff0c;則會收到錯誤消息。在檢查空狀態時&#xff0c;empty()方法不會引發…

Java并發– CyclicBarrier示例

Java中的CyclicBarrier是JDK 5中java.util.Concurrent包中引入的同步器&#xff0c;以及其他并發實用程序&#xff08;如Counting Semaphore &#xff0c; BlockingQueue &#xff0c; ConcurrentHashMap等&#xff09;。CyclicBarrier與CountDownLatch類似&#xff0c;我們在上…

java i o總結_Java I/O 總結

一、IO流的三種分類方式1.按流的方向分為&#xff1a;輸入流和輸出流2.按流的數據單位不同分為&#xff1a;字節流和字符流3.按流的功能不同分為&#xff1a;節點流和處理流二、IO流的四大抽象類&#xff1a;字符流&#xff1a;Reader Writer字節流&#xff1a;InputStream(讀數…

try...catch 語句

一般情況下&#xff0c;我們很少用到 try...catch 語句&#xff0c;但是有時候為了測試代碼中的錯誤&#xff0c;也有可能會用到。小白我也在工作中用到過。那么好的程序設計&#xff0c;什么時候會用到呢&#xff1f; try...catch 一般用來捕獲宿主對象或者ECMAScript拋出的異…

用Mockito回答

在編寫單元測試時 &#xff0c;必須牢記不要依賴外部組件。 為了避免這種情況&#xff0c;我們使用了模擬框架&#xff0c;對我來說&#xff0c;最容易使用的是Mockito 。 在本文中&#xff0c;我們將看到在Mockito中使用的一種“高級”技術&#xff0c;可以使用Answer接口在模…

java三板斧_Java 枚舉使用三板斧

Java 枚舉使用三板斧1 定義public enum CountryEnums {ONE(1,"韓"),TWO(2,"魏"),THREE(3,"楚"),FOUR(4,"燕"),FIVE(5,"趙"),SIX(6,"齊");private Integer retCode;private String retMsg;// 枚舉的構造方法是 pri…

假裝這些是MyEclipse的快捷鍵(1)

Java快捷鍵 Alt / 代碼自動補全Alt Shift S 功能菜單 Ctrl 1 代碼自動修正Ctrl / 單行注釋/取消Ctrl O 查看類的所有方法Ctrl T 查看類的集成架構圖Ctrl Shift / 多行注釋Ctrl Shift \ 取消多行注釋Ctrl Shift F 代碼格式化轉載于:https://www.cnblogs.com/swordt…

JasperReports JSF插件用例–簡單列表報告

這是JasperReports JSF插件系列的第一篇“用例文章” &#xff0c;我將專注于一個簡單的需求&#xff0c;并且我將進一步深入。 起點是我們已經為圖書商店完成的項目設置&#xff0c;我將向其中添加一個列表&#xff0c;其中包含在數據庫中注冊的其他圖書&#xff0c;該列表也將…

2016.10.17先占坑

2016.10.17先占坑轉載于:https://www.cnblogs.com/amurzet/p/5978986.html

ER圖流程圖

ER圖&#xff1a;ER圖分為實體、屬性、關系三個核心部分。實體是長方形體現&#xff0c;而屬性則是橢圓形&#xff0c;關系為菱形。 圖書館管理系統流程圖&#xff08;圖片源于網上&#xff09;&#xff1a;對于程序員來說&#xff0c;我們要知道&#xff1a;整個系統中&#x…

php源碼仿三一重工,織夢仿三一重工業大學氣企業網站php源碼

★模板引薦★源碼稱呼&#xff1a;仿三一重工業大學氣企業網站php源碼仿三一重工業大學氣企業網站php源碼&#xff0c;嘗試完備無錯&#xff0c;兼容合流欣賞器。模板包括安置證明&#xff0c;并包括嘗試數據。本模板鑒于DEDECms 5.7 GBK安排&#xff0c;須要 UTF-8版本的請本人…

接觸Jenkins(Hudson)API,第2部分

這篇文章從本教程的第1部分繼續。 已經快一年了&#xff0c;但是我終于有時間重新審視我為與Jenkins api交互而編寫的一些代碼。 我已經使用了部分工作來幫助管理許多Jenkins構建服務器&#xff0c;主要是保持插件同步以及將作業從一臺機器移動到另一臺機器。 在本文中&#xf…

php樹莓派魔鏡,用樹莓派和顯示器制作一面“魔鏡”

所需要的材料一臺顯示器一塊和顯示器大小相同的雙面鏡一些2*4米的細木條樹莓派機器必要組件(電源、HDMI線、usb無線網卡、鍵盤)木工工具(鋸子、磨砂機、螺絲刀)螺絲、液態釘子選一個合適的顯示器鏡子的大小完全由顯示器的類型和大小決定&#xff0c;所以我希望得到一個盡量大的…

【數字圖像處理】[3]--直方圖規范化

【數字圖像處理】[3]--直方圖規范化直方圖規范化出現的原因是因為直方圖均衡只能產生出固定的圖像&#xff0c;不滿足于需求&#xff0c;有時我們需要讓直方圖變成特定的直方圖&#xff0c;于是有了直方圖規范化原理&#xff1a;可能只看公式沒什么感覺&#xff0c;我們來舉一個…

JavaFX 2.0布局窗格– GridPane

毫無疑問&#xff0c; GridPane是JavaFX 2.0中功能最強大&#xff0c;最靈活的布局窗格。 它在由行和列組成的靈活網格中布置其子項&#xff0c;與Swing的GridBagLayout或HTML的表格模型非常相似。 這種方法使該窗格非常適合于任何形式的表單&#xff08;例如網站上的聯系表單&…

leecode 題解 || Merge k Sorted Lists 問題

problem&#xff1a; Merge k sorted linked lists and return it as one sorted list.Analyze and describe its complexity.Tags Divide and Conquer Linked List Heap合并K個已序單鏈表 thinking&#xff1a; &#xff08;1&#xff09;題目沒有要求不能夠新開ListNode,所以…

PHP在瀏覽器中被拒絕請求,php控制請求頁面瀏覽器緩

緩存的主要作用是防止用戶頻繁刷新網站頁面&#xff0c;導致服務器數據庫負擔&#xff0c;既要保證信息更新的及時性&#xff0c;也要保證緩存能被充分利用。http協議里控制瀏覽器緩存的頭有三個Cache-Control&#xff0c;Expires&#xff0c;Last-Modified&#xff0c;在PHP下…

js -03課 -03 js中的真假判斷

真假的問題&#xff1a;數據類型-數字&#xff08;NaN&#xff09;、字符串、布爾、函數、對象&#xff08;elem、[]、{}、null&#xff09;、未定義真&#xff1a;非0的數字、非空字符串、true、函數、能找到的元素、[]、{}假&#xff1a;0、NaN、空字符串、false、不能找到的…

HBASE啟動失敗,Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster

Master日志錯誤&#xff1a;2015-12-02 06:34:32,394 ERROR [main] master.HMasterCommandLine: Master exitingjava.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMasterat org.apache.hadoop.hbase.master.HMaster.constru…