隐式超级构造函数object()未定义。必须明确调用另一个构造函数。

55

这是一个新的 bug 吗?我买了一台新的 Mac 电脑并下载安装了 eclipse。校验和匹配正常。但当我尝试创建一个简单的类来进行基本测试时,我得到了标题中提到的错误。我从未见过 Java 抱怨 object() 构造函数。下面是这个类:

package com.my.ok;

public class First {

}

编辑:

我发现如果将执行环境设置为javaSE-1.7,问题会出现。

输入图像描述


2
听起来像是安装问题。代码显然没问题。 - Jon Skeet
1
这与该问题类似吗?http://stackoverflow.com/questions/14466323/gson-serialized-name-implicit-super-constructor-object-is-undefined-for-defa - zw324
2
重新安装所有内容。 - Steve P.
@ZiyaoWei 不完全是。但感谢提供链接。我已经利用那里的笔记进行了一些研究。 - Cote Mounyo
1
我发现如果将“执行环境”设置为“javaSE-1.7”,问题就会出现。如果需要的话,我会编辑并添加图片。 - Cote Mounyo
2
是的,听起来像是Eclipse找不到有效的JRE。在Eclipse首选项/Java/已安装的JRE中,请检查您是否有有效JRE的目录。您可以通过使用shell cd到该目录并针对源文件运行bin/javac来进行验证。如果您在那里得到相同的结果,请重新安装Java。 - Tap
6个回答

154

如果您的项目构建路径中未配置JRE,则会出现此问题。

如何配置JRE:

在Eclipse中:

  • 右键单击项目,选择Build Path -> Configure Build Path
  • 进入Libraries tab,点击Add Library
  • 选择JRE System Library,点击Next
  • 然后根据您的需要从选项中选择JRE。 点击Finish

在Netbeans中:

  • 右键单击项目,选择Properties
  • 在库类别中,根据您的需要选择Java Platform
  • 然后转到源代码类别,选择Source/Binary Format并根据您的要求选择JDK。

说明:

错误是因为您的项目未包含系统库,因此您的类无法找到首先在层次结构中调用的Object()构造函数。

示例:

package com.my.ok;

public class First {

}

发生的情况是,编译器 默认将您的 First 类扩展到 Object

package com.my.ok;

public class First extends Object {

}

但是在您的情况下未找到Object类,因此出现了此错误。


1
对我来说,这是在更新Eclipse/ADT插件时发生的。我已经安装了JRE 1.7,在更新后(似乎)我必须在Window>Preferences>Java>Compiler中选择“1.7”作为兼容级别(安装Java 1.6 JRE也可能足够)。在该对话框中有一个小警告信号,但从实际错误消息到那里没有路线... SO再次拯救了一天!(顺便说一句,有趣的是,项目特定的兼容级别似乎很好,保持为1.6) - akauppi
1
非常感谢您的回答,加一分。 - Shailendra Madda
不确定发生了什么,但是删除我的项目并重新创建解决了这个问题。 - fIwJlxSzApHEZIl
@advocate 这是因为当您创建新项目时,JDK被添加了,您可以在项目属性->构建路径->库中进行检查。 - Vishrant
对于那些没有任何GUI,例如只是使用eclipse.jdt.ls的人来说,解决方法是适当设置JAVA_HOME。例如在macOS上:export JAVA_HOME=$(/usr/libexec/java_home) - terje

12

这是Java web 项目中常见的 JRE 配置问题。右键点击你的项目,选择“Build Path”和“Configure Build path”。在“Libraries”选项卡中双击“JRE System Libraries”,然后选择“Default workspace”工作区。如果你没有安装,请先安装然后按照上述流程操作。


3

前往buildPath,在libraries中双击JRE系统库,选择workspace默认工作区。


2
如果您的项目是Maven项目,请尝试使用“mvn clean install”命令。这对我很有效。

1
我曾经遇到同样的问题,后来我更改了我的已安装的JRE并指向jdk,这对我起了作用。
Eclipse -> Windows -> Preferences -> Java -> Installed JRE -> Add new (提供已安装的java jdk的路径)

0

我在IntelliJ中遇到了这个问题。我使用的是JDK版本1.8.0_333,但我的Maven运行器版本是11.0.1。当我将其更改为1.8.0_333时,错误消失了。

Maven Runner版本可以在“首选项->构建、执行、部署->构建工具->Maven->Runner”下设置。

我仍然对这个错误感到困惑,因为那个Maven运行器在我所有其他项目中都能正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接