无法使用Eclipse执行StringBuilder

k75qkfdt  于 2022-10-15  发布在  Eclipse
关注(0)|答案(2)|浏览(243)

最近,我开始学习Java。当我尝试执行以下代码时:

public class Application {

    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("");
        sb.append("a");
    }
}

我收到以下错误:
无法解析类型java.lang.CharSequence。它是从必需的.class文件中间接引用的

线程“main”java.lang.Error:未解决的编译问题:无法解析类型java.lang.CharSequence。它是从必需的.class文件中间接引用的
在Application.main(Application.Java:8)

vwoqyblh

vwoqyblh1#

我的猜测是,您会尝试在不支持Java 8 JVM的旧版本的Eclipse中使用它。当Java版本的JVM无法识别时,我认为Eclipse的行为是不可预测的。
java.lang.CharSequence是在Java 1.4中引入的,但我的猜测是,太旧的Eclipse版本不能识别Java 8 JVM中包含的CharSequence
Java 8在接口中支持default methods。在JDK 8中,许多旧接口现在都有新的默认方法。例如,现在在CharSequence中,我们有了chars和codePoints方法
当使用JDK 8和带有自己的编译器的IDE时,即使您没有使用较新的Java 8特性,也必须将IDE更新到支持Java 8的版本。
您有两种解决方案,您可以:

  • 使用与您当前的IDE兼容的Java版本。
  • 更新您的Eclipse IDE

支持Java 8的Eclipse IDE:

第一个支持Java 8的Eclipse版本是带有an additional patch的Eclipse Kepler SR2(4.3.2),它可以从Marketplace中获取be downloaded
在我看来,你应该支持latest Eclipse Version
例如,对于当前稳定的版本(露娜SR2;版本4.4.2),不需要额外的补丁。

标识Eclipse版本和使用的JRE

转到Menu>Help>About Eclipse。在该对话框中,单击Installation Details按钮并切换到Configuration选项卡。

有趣的台词是:

eclipse.buildId=4.5.0.I20150203-1300
...
java.version=1.7.0_45

在第一个About Eclipse窗口上,您已经在屏幕截图上看到了Eclipse版本和发行版的名称(mars-m5)。
请注意,您的Java项目使用的JRE并不一定是由Eclipse本身使用的JRE。

您的工作空间中有JRE:

在页面树中使用Windows>PreferencesJava>Installed JREs,您将定义所有可用的JRE。

使用Add…按钮,您可以添加任意数量的JRE。选中的JRE将成为“Workspace Default JRE”。
如果不是这样,您可以使用Add按钮添加一个新的JRE。

附加概念:执行环境

Eclipse IDE为“已安装的JRE”定义了一个额外的概念:“执行环境”。定义了环境列表。例如:JavaSE-1.6JavaSE-1.7JavaSE-1.8...此列表在IDE中进行了硬编码,并取决于安装的版本。
在首选项页面中:Java>Installed JREs>Execution Environment,您可以定义哪个JRE将对应于每个特定环境。

使用这个额外的抽象在团队中工作时很有用;您不能保证每个人都安装了相同的JRE,并且每个JRE都使用相同的ID将在团队成员中使用。执行环境是一个非常稳定的分母,可以在团队中共享。

确保为您的项目定义了JRE系统库

在Package Explorer中,您应该看到Java版本:

如果这不正确,您应该打开上下文菜单JRE System Library项并选择Properties菜单项。

您可以选择:

  • 已定义的执行环境之一(在您的首选项中Map到JRE)
  • 首选项中定义的可用JRE之一。
  • 工作区默认JRE(也在首选项中定义)

在项目的根目录中有一个.classpath文件(该文件可能会从Package Explorer View中过滤掉,更改过滤器配置或使用Navigator View打开该文件)。它应该如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

在本例中,项目使用JavaSE-1.8执行环境。

如果您使用的是maven

Maven还定义了Java版本应该是什么。您需要将Eclipse设置与项目pom.xml文件中定义的内容同步。
您可以通过从项目提供的上下文菜单中选择Maven>Update project configuration来实现这一点。

重建您的项目

有时,Eclipse会感到困惑(特别是如果您只是更改了一些设置)。使用CLEAN函数会有所帮助。打开菜单:Project>Clean...

从列表中选择您的项目或“清理所有项目”并选中“立即开始构建”(如果与此相关)。
对我有帮助的相关答案:

  • @Holger在Java 8中使用LogManager(L4j2)时出错(无法解析java.lang.refect.AnnotatedElement)

在包声明中无法解析类型为java.lang.CharSequence的*@mkrakhin

6xfqseft

6xfqseft2#

简单步骤是从Eclipse中删除项目并再次将其导入。对我很管用!!

相关问题