14

我试图寻找解决方案,但我发现我不知道如何在这种情况下应用。请帮我更正我的代码。

package Exercise;

public class Ex11_11 {
public static void main(String[] args) {
    A a = new A(3);
    }
}

class A extends B { // type A is already defined, A has a red underline
    public A (int t) {
    System.out.println("A's constructor is invoked");
    }
}

class B { // type B is already defined, B has a red underline
    public B () {
        System.out.println("B's constructor is invoked");
    }  
}
4

11 回答 11

35

Eclipse 有时会感到困惑。如果您CleanProject菜单中选择,它可能会修复这些错误。

于 2013-10-26T20:00:58.793 回答
11

嗯,首先要检查的显然是你的文件或同一个包中是否有另一个类被调用A

于 2013-10-26T21:19:25.957 回答
3

我有同样的问题。我的电脑被 IT 远程重启了,Eclipse 没有正常关闭。我注意到我的项目中有一个额外的 java 文件我没有添加。删除它,现在错误消失了。

于 2016-04-06T13:38:34.247 回答
1

在您的项目中,您可能拥有具有相同包结构和相同类名的测试目录(例如,在不将类名更改为 *Test 的情况下复制)。

于 2016-03-02T08:05:00.337 回答
1

在 Project-> Clean 中,选择“Clean projects selected below”,选择我的项目并选中“立即开始构建”和“仅构建选定的项目”。

然后问题就会解决。

于 2016-08-04T05:21:35.087 回答
1

如果上述解决方案都不适合您,那么构建路径可能会搞砸。当您将 src 添加到构建路径时,请确保 src 不在排除列表中。将 *(通配符)放在包含列表中,而在排除列表中不放置任何内容。

于 2019-04-05T18:26:44.697 回答
1

确保

项目 | 自动构建

被检查。

于 2019-07-10T20:41:26.483 回答
1

检查您的所有类文件是否已保存。我遇到过几次这个问题:我在类文件中定义一个类,然后将它移到它自己的类中。Java 被泄露,因为它从原始文件的旧版本中读取。一旦您将其与缺少的类定义一起保存并在新文件中定义类,一切都应该没问题。

于 2015-10-30T09:15:46.300 回答
0

主要原因是在同一个包的某个地方,您已经定义了一个名为 A 的类。这导致类型A已定义错误。

检查是否有任何名为A 的子类或内部类

于 2017-05-01T09:10:11.247 回答
0

将类名 A 重命名为 Aa 或其他名称并尝试运行。

于 2020-12-12T16:44:35.677 回答
0

您是否在构建路径中添加了另一个项目?

我的开发环境(Eclipse)也有同样的问题。
我的 Maven 应用程序消耗了其他应用程序。在 Eclipse 上,这些项目只是添加到构建路径中。其中之一具有相同的包结构和类文件名。Eclipse 最终认为这两个物理上不同的文件都在同一个目录中,因为包结构和文件名是相同的。
例如,假设有两个文件如下:

/Users/uname/home/proj1/com/app/proj/main/java/util/file1.java

/Users/uname/home/proj2/com/app/proj/main/java/util/file1.java

让我们说两者都有包名

com.app.define.proj.util

如果将其中一个项目添加到另一个项目中,Eclipse 会认为这两个文件位于同一位置。
我通过从使用的应用程序中创建一个 JAR 文件,将其添加到构建路径并从构建路径中删除 Eclipse 项目来解决。

于 2019-09-26T09:22:44.003 回答