不能用Eclipse做StringBuilder
最近我开始学习Java。 当我尝试执行以下代码时:
public class Application { public static void main(String[] args) { StringBuilder sb = new StringBuilder(""); sb.append("a"); } }
我收到以下错误:
无法解析java.lang.CharSequence类型。 它是从所需的.class文件间接引用的
和
线程“main”中的exceptionjava.lang.Error:未解决的编译问题:无法解析java.lang.CharSequence类型。 它是从所需的.class文件间接引用的
在Application.main(Application.java:8)
我的猜测是你尝试在不支持它的旧版Eclipse中使用Java 8 JVM。 当Java版本的JVM无法识别时,我认为Eclipse的行为是不可预测的。
java.lang.CharSequence
是随Java 1.4引入的,但我的猜测是,旧版本的Eclipse无法识别Java 8 JVM中包含的CharSequence
。
Java 8支持接口中的默认方法 。 在JDK 8中,许多旧接口现在都有新的默认方法。 例如, 现在在CharSequence中我们有chars和codePoints方法
当使用JDK 8和带有自己的编译器的IDE(如Eclipse)时,即使您没有使用较新的Java 8function,也必须将IDE更新为支持Java 8的版本。
您有2个解决方案,您可以:
- 使用与当前IDE兼容的Java版本。
- 更新Eclipse IDE
支持Java 8的Eclipse IDE:
支持Java 8的第一个Eclipse版本是Eclipse Kepler SR2(4.3.2),其中包含一个可以从Marketplace 下载的 补丁 。
在我看来,你应该使用最新的Eclipse版本 。
例如,对于当前的稳定版本(Luna SR2;版本4.4.2),不需要额外的补丁。
识别Eclipse版本和Eclipse使用的JRE
转到Menu
> Help
> About Eclipse
。 在对话框中,单击“ Installation Details
按钮并切换到“ Configuration
选项卡。
有趣的是:
eclipse.buildId=4.5.0.I20150203-1300 ... java.version=1.7.0_45
在First About Eclipse
窗口中,您已经拥有Eclipse版本和截图的名称(Mars-M5)。
请注意,Eclipse本身使用的JRE不是Java项目使用的JRE所必需的。
您的工作区中提供的JRE:
在页面树中使用Windows
> Preferences
和Java
> Installed JREs
,您将定义所有可用的JRE。
使用“ Add…
按钮,您可以添加任意数量的JRE。 选中的JRE是“ 工作区默认JRE ”。
如果不是这种情况,您可以使用添加按钮添加新的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
菜单项。
你可以选择:
- 其中一个已定义的执行环境(映射到首选项中的JRE)
- 首选项中定义的可用JRE之一。
- 工作空间默认JRE(也在首选项中定义)
在项目的根目录下,您有一个.classpath
文件(该文件可能会从Package Explorer View
过滤掉,更改filter配置或使用Navigator View
打开文件)。 它应该是这样的:
在这种情况下,项目使用JavaSE-1.8
执行环境。
如果你正在使用maven
Maven还定义了Java版本应该是什么。 您需要将Eclipse设置与项目pom.xml
文件中定义的内容同步。
您可以通过从Update project configuration
可用的上下文菜单中选择Maven
> Update project configuration
来实现此目的。
重建您的项目
有时候Eclipse会混淆(特别是如果你刚改变了一些设置)。 使用清洁function可以提供帮助。 打开菜单: Project
> Clean
…
从列表中选择您的项目或“清除所有项目”,如果相关,请选中“立即开始构建”。
帮助我的相关答案:
- 将LogManager(l4j2)与Java 8一起使用时出现@Holger错误(无法解析java.lang.reflect.AnnotatedElement)
- @mkrakhin中的类型java.lang.CharSequence无法在包声明中解析