最近,我开始学习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)
2条答案
按热度按时间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的版本。
您有两种解决方案,您可以:
支持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
选项卡。有趣的台词是:
在第一个
About Eclipse
窗口上,您已经在屏幕截图上看到了Eclipse版本和发行版的名称(mars-m5)。请注意,您的Java项目使用的JRE并不一定是由Eclipse本身使用的JRE。
您的工作空间中有JRE:
在页面树中使用
Windows
>Preferences
和Java
>Installed JREs
,您将定义所有可用的JRE。使用
Add…
按钮,您可以添加任意数量的JRE。选中的JRE将成为“Workspace Default JRE”。如果不是这样,您可以使用Add按钮添加一个新的JRE。
附加概念:执行环境
Eclipse IDE为“已安装的JRE”定义了一个额外的概念:“执行环境”。定义了环境列表。例如:
JavaSE-1.6
,JavaSE-1.7
,JavaSE-1.8
...此列表在IDE中进行了硬编码,并取决于安装的版本。在首选项页面中:
Java
>Installed JREs
>Execution Environment
,您可以定义哪个JRE将对应于每个特定环境。使用这个额外的抽象在团队中工作时很有用;您不能保证每个人都安装了相同的JRE,并且每个JRE都使用相同的ID将在团队成员中使用。执行环境是一个非常稳定的分母,可以在团队中共享。
确保为您的项目定义了JRE系统库
在Package Explorer中,您应该看到Java版本:
如果这不正确,您应该打开上下文菜单
JRE System Library
项并选择Properties
菜单项。您可以选择:
在项目的根目录中有一个
.classpath
文件(该文件可能会从Package Explorer View
中过滤掉,更改过滤器配置或使用Navigator View
打开该文件)。它应该如下所示:在本例中,项目使用
JavaSE-1.8
执行环境。如果您使用的是maven
Maven还定义了Java版本应该是什么。您需要将Eclipse设置与项目
pom.xml
文件中定义的内容同步。您可以通过从项目提供的上下文菜单中选择
Maven
>Update project configuration
来实现这一点。重建您的项目
有时,Eclipse会感到困惑(特别是如果您只是更改了一些设置)。使用CLEAN函数会有所帮助。打开菜单:
Project
>Clean
...从列表中选择您的项目或“清理所有项目”并选中“立即开始构建”(如果与此相关)。
对我有帮助的相关答案:
在包声明中无法解析类型为java.lang.CharSequence的*@mkrakhin
6xfqseft2#
简单步骤是从Eclipse中删除项目并再次将其导入。对我很管用!!