[英]Caused by:java.lang.ClassCastException:
今天,我正在編寫程序,但出現此錯誤。
Caused by:java.lang.ClassCastException: org.cubeville.blocks.CrossedBlockBrush cannot be cast to org.cubeville.blocks.DefaultBlockBrush
我的程序當然是用Java編寫的。 它使用lwjgl和slick。 我想知道是什么原因導致的,是否有確定的解決方案。
謝謝
首先檢查DefaultBlockBrush
確實是CrossedBlockBrush
的超類型。 如果不是,則強制轉換完全是非法的。 檢查您是否使用相同版本的庫進行編譯和運行; 也許這種關系只適用於一個,而不適用於另一個。
如果DefaultBlockBrush
確實是CrossedBlockBrush
的超類型,那么您獲得這種消息的唯一方法是,如果CrossedBlockBrush
和DefaultBlockBrush
由兩個不同的類加載器加載。 此類情況可能發生在配置不正確的Web應用程序中,或在基於OSGi的具有多個ClassLoader
的其他基於組件的系統的應用程序中。
您正在投放類似
DefaultBlockBrush blockBrush = (DefaultBlockBrush) brush;
但是畫筆,在右側是CrossedBlockBrush類型。 如果CrossedBlockBrush是DefaultBlockBrush的子類,則可以這樣做,但顯然不是。
我可以告訴你:
org.cubeville.blocks.CrossedBlockBrush
不能轉換為:
org.cubeville.blocks.DefaultBlockBrush
但這只是說異常。
在代碼中的某處您具有:-
instance = (DefaultBlockBrush) originalInstance
並且由於CrossedBlockBrush
沒有實現或擴展DefaultBlockBrush
您將獲得CrossedBlockBrush
異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.