簡體   English   中英

造成原因:java.lang.ClassCastException:

[英]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的超類型,那么您獲得這種消息的唯一方法是,如果CrossedBlockBrushDefaultBlockBrush由兩個不同的類加載器加載。 此類情況可能發生在配置不正確的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM