2012-02-24 58 views
0

今天我的工作我的計劃,我得到這個錯誤。造成的:java.lang.ClassCastException:

Caused by:java.lang.ClassCastException: org.cubeville.blocks.CrossedBlockBrush cannot be cast to org.cubeville.blocks.DefaultBlockBrush 

我的程序當然是用Java編寫的。它使用lwjgl和光滑的。我想知道什麼可能會導致這種情況,如果有確定的問題。

謝謝

+2

我們將需要看到拋出此異常代碼的一部分。 – 2012-02-24 21:21:55

+0

您試圖將CrossedBlockBrush強制轉換爲不能執行的類型DefaultBlockBrush。我不知道你使用的是什麼軟件包,所以它有點難以幫助。查看堆棧跟蹤並按照它找出拋出異常並將代碼發佈到那裏,然後可能會更容易幫助。 – Dan675 2012-02-24 21:26:04

+0

「\t公共DefaultBlockBrush getDefaultBlockBrush() \t { \t \t回報(DefaultBlockBrush)刷; \t} \t \t 公共CrossedBlockBrush getCrossedBlockBrush() \t { \t \t回報(CrossedBlockBrush)刷; \t}' 然後CrossedBlockBrush類位於:[link](http://paste.ubuntu.com/855851/) – user1231669 2012-02-24 21:27:21

回答

2

首先檢查DefaultBlockBrush確實是一個CrossedBlockBrush父。如果不是,那麼劇組簡直是非法的。檢查您是否使用相同版本的庫進行編譯和運行;也許這種關係適用於一種,但不適用於另一種。

如果DefaultBlockBrush的確是一個CrossedBlockBrush父,那麼你可以得到,如果CrossedBlockBrushDefaultBlockBrush由兩個不同的類加載器加載這類消息將是唯一的出路。這種事情可以在配置不當的Web應用程序或應用程序基於多ClassLoader就像OSGi的一些其他的基於組件的系統上發生。

0

您是鑄造像

DefaultBlockBrush blockBrush = (DefaultBlockBrush) brush; 

但刷,右手邊是類型CrossedBlockBrush的。如果CrossedBlockBrush是DefaultBlockBrush的子類,則可以這樣做,但顯然不是。

0

我可以告訴你的是: -

org.cubeville.blocks.CrossedBlockBrush 

不能轉換爲: -

org.cubeville.blocks.DefaultBlockBrush 

但這僅僅是說除了說什麼。

某處在你的代碼中有: -

instance = (DefaultBlockBrush) originalInstance 

因爲CrossedBlockBrush不執行或延長DefaultBlockBrush你得到一個轉換異常。

相關問題