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 System Library
== JavaSE-1.8
在Package Explorer中,您应该看到Java版本:
如果这不正确,您应该打开JRE System Library
项的上下文菜单,然后选择Properties
菜单项。
在您的项目中,您有一个.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
在开关盒块中。
现在,烟灰可以成功运行。