【问题标题】:Type mismatch: cannot convert from ArrayList<?> to List<String>类型不匹配:无法从 ArrayList<?> 转换为 List<String>
【发布时间】:2015-10-26 17:32:22
【问题描述】:

我发现了类似的问题,但它们并没有解决我的问题。

我有一个在 Windows 平台上运行的 Java 应用程序,我可以使用 Eclipse 对其进行调试,但它不能在 Linux 上运行(与代码本身有关的问题)。

我想在 Linux Eclipse 环境中调试它,但是我遇到了在 Linux 上调试它时没有遇到的奇怪错误。

线程“AWT-EventQueue-0”java.lang.Error 中的异常:未解决的编译问题: 类型不匹配:无法从 ArrayList 转换为 List 无法实例化类型 ArrayList 标记“

我知道我应该导入这些:

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

它们是进口的。

有什么线索吗?

【问题讨论】:

  • 我的意思是当我在 windows 上调试时错误不存在,但它们出现在 eclipse/java 的 linux 版本中
  • 您是否在两个平台上运行相同版本的 Java JDK?
  • 您使用的是相同的 Java 版本吗?是否安装了相同的库?你如何确定 Linux Java 没有损坏?
  • 您能否使用这些导入包含相关代码?

标签: java eclipse


【解决方案1】:

您可能使用 java.awt.List; 而不是java.util.List;

【讨论】:

    【解决方案2】:

    无论您使用哪个平台,都会引发此类错误。如果你在windows上运行成功,那只能说明你没有运行原来编译失败的方法。

    查看错误的堆栈跟踪,您会发现哪个是失败的方法。

    注意:如果 javac 在方法体中发现错误,那么它仍然会生成类文件,但有问题的方法不会做任何事情,只会抛出错误。这就是您的应用所发生的事情,并且它应该发生在任何平台上。

    【讨论】:

    • 你是说 javac 故意创建损坏的类文件?
    • @erosb umm...不,如果编译时发现错误,则不创建类文件
    • 是的,完全正确。我认为它以这种方式使非编译类在某种意义上仍然可以引用。我的意思是这样,如果你有 MyClassA,它没有编译,并且你还有 MyClassB,它有一个类型为 MyClassA 的成员,MyClassB 仍然编译(MyClassB.java 没有错误),因为创建了 MyClassA.class 二进制文件,并且编译器仅在 MyClassA.java 中产生错误。这在代码编辑过程中非常有用,因为两个文件保存之间的一个小临时错误不会在 IDE 中重新定义整个代码库。不好的地方是损坏的二进制文件也可以打包运行。
    • 你有证据支持你的说法吗?
    • 哎呀,我错了。它只是 eclipse 而不是 javac 本身的行为方式:stackoverflow.com/questions/1124788/…
    猜你喜欢
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 2016-04-08
    相关资源
    最近更新 更多