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

时间:2014-07-13 22:22:01

标签: java eclipse

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

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

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class MyProject {
    public static void main (String args[])
    {
        List<String> myList = new ArrayList<String>();

        myList.add("test");
        myList.add("test2");

        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);行eclipse中显示此错误:

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

2 个答案:

答案 0 :(得分:12)

确保Eclipse IDE支持Java 8:

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

在我看来,你应该使用latest Eclipse Version

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


确保工作区中有1.8 JRE:

Windows&gt;偏好:Java&gt;已安装的JRE

Installed JREs

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


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

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

Package Explorer

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

JRE System Library - Properties

在您的项目中,您有一个.classpath文件(如果您没有看到该文件,请使用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>

重建项目

项目菜单&gt;清洁...

从列表中选择您的项目或&#34;清理所有项目&#34;和&#34;立即开始构建&#34;


另见:

答案 1 :(得分:1)

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

(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个类来支持解析:

在soot.JastAddJ.BytecodeParser的方法parseEntry

,添加

CONSTANT_MethodHandle_Info, CONSTANT_MethodType_Info, CONSTANT_InvokeDynamic_Info

在开关案例块中。

现在,soot可以成功运行。