在 Eclipse 中创建了一个“java”类,当尝试再次在同一个包中使用相同的类名时,它显示错误“类型已定义”。当在记事本中编写程序并在命令提示符中运行时,它会覆盖类并且不显示错误,为什么在使用 eclipse 时不覆盖,以覆盖需要执行的操作。
最佳答案
编辑:好的,通过评论,我认为我们实际上已经找到了问题的根源。情况是:
- Windows下编译
- 同一个文件中有两个类具有相同的名称除了 case
- 由于 Windows 文件系统不区分大小写,命令行编译器没有注意到这两个类文件将变成一个类文件,但 Eclipse 却注意到了
举个例子:
class Foo {}
class foo {}
Eclipse 错误消息也通过提及案例使这一点变得非常清楚:
Class file collision: A resource exists with a different case: '/Sandbox/bin/Foo.class'.
与我之前的回答一样,我的建议仍然是相同的不要这样做。
<小时/>之前的回答...
我怀疑当您在不同的文件中使用相同的名称并从命令行编译时,您只指定了其中一个来编译 - 而 Eclipse 将尝试编译所有存在的类。如果您指定了这两个文件,则会出现错误:
例如:
X.java
class Foo {}
Y.java
class Foo {}
> javac X.java Y.java
Y.java:1: error: duplicate class: Foo
class Foo {}
^
1 error
基本上,不要这样做。重命名其中一个类,或删除其中一个文件。
关于java - 为什么 Eclipse 中的同一个类文件不覆盖并显示已定义的错误类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24961581/