2015-10-26 159 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;

相关问题