Ошибка 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<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 System Library [jre8] и добавил его снова. Но не получилось! Что я могу сделать? Спасибо!
PS: В строке Collections.sort(myList);
затмение показывает эту ошибку:
Тип java.lang.CharSequence не может быть разрешен. Это неверно ссылается на требуемые файлы .class.
Ответы
Ответ 1
Убедитесь, что среда Eclipse поддерживает Java 8:
Первой версией Eclipse, поддерживающей Java 8, был Eclipse Kepler SR2 (4.3.2) с дополнительным патчем. (См. Установка поддержки Java ™ 8 в Eclipse Kepler SR2 и соответствующий элемент Marketplace, который необходимо установить: Поддержка Java 8 для Eclipse Kepler SR2).
По-моему, вы должны ухаживать за последняя версия Eclipse.
С Luna SR2 (4.4.2) дополнительный патч не требуется.
Убедитесь, что 1.8 JRE доступно в вашей рабочей области:
Windows > Предпочтения: Java > Установленные JRE
![Installed JREs]()
Если это не так, вы можете добавить новую JRE с кнопкой добавления.
Убедитесь, что JRE System Library
== JavaSE-1.8
для вашего проекта
В Проводнике пакетов вы должны увидеть версию 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>
Восстановить проект
Меню проектa > Очистить...
Выберите проект из списка или "Очистить все проекты" и "Начать сборку сразу"
См. также:
Ответ 2
Это связано с тем, что класс BytecodeParser в soot.JastAddJ не поддерживает более высокую версию формата файла 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
of soot.JastAddJ.BytecodeParser, добавьте
CONSTANT_MethodHandle_Info,
CONSTANT_MethodType_Info,
CONSTANT_InvokeDynamic_Info
в блоке корпуса коммутатора.
Теперь сажа может успешно работать.