Тип java.lang.CharSequence не может быть разрешен в объявлении пакета
Я получаю 2 класса в пакете P
. Класс интерфейса A
и его класс реализации B
.
В файле с классом B
появляется следующая ошибка: The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .class files
.
Я использую Eclipse Helios и
$ java -version
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) Server VM (build 25.5-b02, mixed mode)
Стандартное решение по удалению и добавлению JRE не работает.
Как я могу это исправить?
EDIT:
Код:
Класс A
:
package com.jax;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
@WebService
@SOAPBinding(style = Style.RPC)
public interface WebServiceInter {
@WebMethod
String sayHello();
}
Класс B
:
package com.jax; // **Error is here**
import javax.jws.WebService;
@WebService(endpointInterface = "com.jax.WebServiceInter")
public class WebServiceImpl implements WebServiceInter{
@Override
public String sayHello(){
return "Hello!";
}
}
Структура проекта:
ProjectName → Ресурсы Java → com.jax → Класс A
, класс B
Ответы
Ответ 1
Java 8 поддерживает методы по умолчанию в интерфейсах. И в JDK 8 многие старые интерфейсы теперь имеют новые методы по умолчанию. Например, теперь в CharSequence у нас есть методы chars и codePoints.
Если исходный уровень вашего проекта ниже 1,8, компилятор не позволяет использовать методы по умолчанию в интерфейсах. Поэтому он не может скомпилировать классы, которые прямо косвенно зависят от этих интерфейсов.
Если я получу вашу проблему правильно, у вас есть два решения. Первое решение - откат к JDK 7, тогда вы будете использовать старый интерфейс CharSequence без стандартных методов. Второе решение - установить исходный уровень вашего проекта на 1,8, тогда ваш компилятор не будет жаловаться на методы по умолчанию в интерфейсах.
Ответ 2
" поддержка Java 8 для Eclipse Kepler SR2", а новая среда выполнения < JavaSE-1.8 появилась автоматически.
Скачайте этот: - Eclipse kepler SR2
а затем перейдите по этой ссылке: - Eclipse_Java_8_Support_For_Kepler
Ответ 3
Сделайте свой проект и рабочее пространство для указания на JDK7, который решит проблему.
https://developers.google.com/eclipse/docs/jdk_compliance дал способы изменения уровней соответствия и уровня Facet.
Ответ 4
Просто пытаясь скомпилировать с ant,
Имеют такую же ошибку при использовании org.eclipse.jdt.core-3.5.2.v_981_R35x.jar,
Все хорошо после обновления до org.eclipse.jdt.core_3.10.2.v20150120-1634.jar
Ответ 5
Программный пакет Eclipse не поддерживает Java 1.8
Загрузите более новую версию Eclipse.
Ответ 6
"Поддержка Java 8 для Eclipse Kepler SR2", а новая среда исполнения "JavaSE-1.8" появилась автоматически.
Скачайте этот: - Eclipse kepler SR2
а затем перейдите по этой ссылке: - Eclipse_Java_8_Support_For_Kepler
Это сработало для меня.
Спасибо.