Eclipse错误:java.lang.CharSequence无法解析

我试图在Eclipse中编译一个简单的代码时遇到错误。 我正在使用jre8。

例如,当我尝试编译此代码时:

import java.util.ArrayList; import java.util.Collections; import java.util.List; public class MyProject { public static void main (String args[]) { List myList = new ArrayList(); myList.add("test"); myList.add("test2"); Collections.sort(myList); } } 

我在Collections.sort(myList);收到错误Collections.sort(myList); 线。

错误是:

 Exception in thread "main" java.lang.Error: Unresolved compilation problem: The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .class files at project.Principal.main(Principal.java:14) 

我已经打开了eclipse Build Path,删除了JRE系统库[jre8]并再次添加它。 但没有奏效! 我能做什么? 谢谢!

PS。:在Collections.sort(myList); line eclipse显示此错误:

无法解析java.lang.CharSequence类型。 它从所需的.class文件中直接引用。

确保Eclipse IDE支持Java 8:

支持Java 8的第一个Eclipse版本是Eclipse Kepler SR2(4.3.2),附带一个补丁。 (请参阅: 在Eclipse Kepler SR2中安装Java™8支持 ,以及需要安装的相应市场项: Eclipse Kepler SR2的Java 8支持 )。

在我看来,你应该使用最新的Eclipse版本 。

使用Luna SR2(4.4.2)无需额外的补丁。


确保您的工作区中有1.8 JRE:

Windows>首选项:Java>已安装的JRE

已安装的JRE

如果不是这种情况,您可以使用添加按钮添加新的JRE。


确保项目的JRE System Library == JavaSE-1.8

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

Package Explorer

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

JRE系统库 - 属性

在您的项目中,您有一个.classpath文件(如果您没有看到该文件,请使用Navigator View ),它应如下所示:

       

重建您的项目

项目菜单>清洁……

从列表中选择您的项目或“清除所有项目”和“立即开始构建”


也可以看看:

  • @mkrakhin在他的回答中解释: java.lang.CharSequence类型无法在包声明中解析

这是因为soot.JastAddJ中的BytecodeParser类不支持更高版本的java类文件格式。常量池类型的CONSTANT_MethodHandle,CONSTANT_MethodType和CONSTANT_InvokeDynamic错过了。下面是解决问题的解决办法:

(1)添加int soot.JastAddJ.BytecodeParser类型:

 private static final int CONSTANT_MethodHandle=15; private static final int CONSTANT_MethodType=16; private static final int CONSTANT_InvokeDynamic=18; 

(2)添加3个类来支持解析:

parseEntry的方法parseEntry中,添加

CONSTANT_MethodHandle_Info,CONSTANT_MethodType_Info,CONSTANT_InvokeDynamic_Info

在开关盒块中。

现在,烟灰可以成功运行。