2015-10-26 200 views
0

我發現了類似的問題,但他們沒有解決我的問題。類型不匹配:無法從ArrayList <?>轉換爲列表<String>

我有一個在Windows平臺上工作的Java應用程序,我可以使用Eclipse進行調試,但它在Linux上不起作用(與代碼本身相關的問題)。

我想在Linux Eclipse環境中對其進行調試,但是當我在Linux上對其進行調試時,我收到了一些奇怪的錯誤。

Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problems: Type mismatch: cannot convert from ArrayList to List Cannot instantiate the type ArrayList Syntax error on token "<", ? expected after this token

我知道,我應該導入這些:

import java.util.ArrayList; 
import java.util.Date; 
import java.util.List; 

,他們都是進口的。

任何線索的人?

+0

我的意思是,當我調試它在Windows中的錯誤並不存在,但它們出現在eclipse/JAVA –

+2

的Linux版本是否正在運行的Java JDK的同一版本在兩個平臺上? –

+0

您是否使用相同的Java版本?是否安裝了相同的庫?你怎麼確定Linux Java沒有損壞? – skw

回答

0

無論您使用哪種平臺,都會拋出此類錯誤。如果你成功地在Windows上運行它,那麼它只意味着你沒有運行最初無法編譯的方法。

看看錯誤的堆棧跟蹤,你會發現哪一個是失敗的方法。注意:如果javac在方法體中發現一個錯誤,那麼它仍然會生成類文件,但有問題的方法不會做任何事情只是拋出一個錯誤。這是您的應用發生的情況,它意味着會在任何平臺上發生。

+0

你是說javac按設計創建了損壞的類文件? – Kayaman

+3

@erosb umm ...不,如果在編譯時發現錯誤,則不會創建類文件 – eis

+0

是的,正好。我認爲這樣做可以使非編譯類在某種意義上仍然可以引用。我的意思是這樣,如果你有MyClassA不能編譯,而且你的MyClassB有一個類型爲MyClassA的成員,MyClassB仍然會編譯(MyClassB.java沒有錯誤),因爲MyClassA.class二進制被創建,編譯器僅在MyClassA.java中產生錯誤。 在代碼編輯過程中,這非常有用,因爲兩個文件保存之間的小暫時錯誤不會在IDE中對整個代碼庫進行紅線。 不好的部分是損壞的二進制文件也可以打包並運行。 – erosb

0

你可能會使用java.awt.List;代替java.util.List;

相關問題