web-dev-qa-db-fra.com

Le type Java.lang.CharSequence ne peut pas être résolu dans la déclaration du package.

Je reçois 2 classes dans le package P. Classe d'interface A et sa classe d'implémentation B. Dans le fichier de classe B, l'erreur suivante apparaît: The type Java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .class files.

J'utilise Eclipse Helios et

$ 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)

La solution standard de suppression et d’ajout de JRE ne fonctionne pas. Comment puis-je le réparer?

EDIT: Code:
Classe 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();

}

Classe 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!";
    }
}

Structure du projet: NomProjet -> Java Ressources -> com.jax -> Classe A, Classe B

45
user3712116

Java 8 prend en charge méthodes par défaut dans les interfaces. Et dans JDK 8, de nombreuses anciennes interfaces ont maintenant de nouvelles méthodes par défaut. Par exemple, maintenant dans CharSequence, nous avons des méthodes chars et codePoints .
Si le niveau source de votre projet est inférieur à 1.8, le compilateur ne vous permet pas d'utiliser des méthodes par défaut dans les interfaces. Donc, il ne peut pas compiler des classes qui directement dépendent indirectement de ces interfaces.
Si je comprends bien votre problème, vous avez alors deux solutions. La première solution consiste à revenir à JDK 7, puis vous utiliserez l'ancienne interface CharSequence sans méthodes par défaut. La deuxième solution consiste à définir le niveau source de votre projet sur 1.8. Votre compilateur ne se plaindra pas des méthodes par défaut dans les interfaces.

82
mkrakhin

"( Java 8 prise en charge de Eclipse Kepler SR2 " et du nouveau " JavaSE-1.8 "environnement d'exécution apparu automatiquement.

Téléchargez celui-ci: - Eclipse kepler SR2

puis suivez ce lien: - Eclipse_Java_8_Support_For_Kepler

1
akshay_rahar

Votre suite logicielle Eclipse ne prend pas en charge Java 1.8.

Téléchargez une version plus récente d’Eclipse.

1
Michael Fayad

Juste en train de compiler avec ant, vous avez la même erreur lorsque vous utilisez org.Eclipse.jdt.core-3.5.2.v_981_R35x.jar, tout va bien après la mise à niveau vers org.Eclipse.jdt.core_3.10.2.v20150120-1634.jar

0
Henry Li

Faites en sorte que votre projet et votre espace de travail pointent vers JDK7, ce qui résoudra le problème. https://developers.google.com/Eclipse/docs/jdk_compliance a indiqué comment modifier les modifications de conformité et de niveau de facette.

0
Arindam Sarkar