无法在包声明中解析类型java.lang.CharSequence

use*_*116 45 java eclipse

我得到了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)
Run Code Online (Sandbox Code Playgroud)

删除和添加JRE的标准解决方案不起作用.我该如何解决?

编辑: 代码:
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();

}
Run Code Online (Sandbox Code Playgroud)

课程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!";
    }
}
Run Code Online (Sandbox Code Playgroud)

项目结构:ProjectName - > Java Resources - > com.jax - > Class A,ClassB

mkr*_*hin 82

Java 8支持接口中的默认方法.在JDK 8中,许多旧接口现在都有新的默认方法.例如,现在在CharSequence中我们有chars和codePoints方法.
如果项目的源级别低于1.8,则编译器不允许您在接口中使用默认方法.因此它无法编译直接间接依赖于此接口的类.
如果我的问题正确,那么你有两个解决方案.第一种解决方案是回滚到JDK 7,然后您将使用旧的CharSequence接口而不使用默认方法.第二种解决方案是将项目的源级别设置为1.8,然后编译器不会抱怨接口中的默认方法.

  • 我很长时间没有使用过Eclipse.但似乎Helios根本不支持Java 8.Kepler默认也不支持它,但它有特殊的补丁.请检查[此链接](https://wiki.eclipse.org/JDT/Eclipse_Java_8_Support_For_Kepler). (4认同)
  • 我怎样才能做到这一点?悬挂水平后我无法选择高于1.6的水平 (3认同)
  • @BjörnSkoglund但通常,谈到向后兼容性,我们指的是在新JVM上运行用旧JDK编译的代码的可能性(例如,运行使用Java 8在JVM上编译的JDK 7代码).在这种情况下 - 是的,Java 8*是向后兼容的. (3认同)
  • 你刚刚结束了我的一天 但我很困惑,这是不是意味着java8 JRE实际上不向后兼容? (2认同)