Java HttpServer错误:访问限制:类型';HttpServer';这不是API

Java HttpServer错误:访问限制:类型';HttpServer';这不是API,java,Java,我试图用java类做一些事情 这是文档中的最小示例: import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetSocketAddress; import com.sun.net.httpserver.HttpServer; class MyHandler implements HttpHandler { public void ha

我试图用java类做一些事情

这是文档中的最小示例:

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import com.sun.net.httpserver.HttpServer;

class MyHandler implements HttpHandler 
{
    public void handle(HttpExchange t) throws IOException 
    {
        InputStream is = t.getRequestBody();
        read(is); // .. read the request body
        String response = "This is the response";
        t.sendResponseHeaders(200, response.length());
        OutputStream os = t.getResponseBody();
        os.write(response.getBytes());
        os.close();
    }
}

public class Main 
{
    HttpServer server = HttpServer.create(new InetSocketAddress(8000));
    server.createContext("/applications/myapp", new MyHandler());
    server.setExecutor(null); // creates a default executor
    server.start();
}
但我得到了这个错误信息:

说明资源路径位置类型 访问限制:“HttpServer”类型不是API(对所需库“/library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/rt.jar”的限制)Main.Java/test/src/test line 7 Java问题


这到底是什么意思?根据Oracle文档,这应该是可行的。还是我弄错了?

错误消息想说您正在访问的代码不是该库的官方API的一部分。更具体地说,
com.sun.net.httpserver.httpserver
是一个不能保证包含在所有Java8运行时实现中的类。因此,在某些Java安装中,使用该类的代码可能会失败


为了仍然能够使用该类,请查看此问题的答案:。

不要认为应该使用Sun的内部软件包,但仍然可以尝试禁用错误:

转到项目属性->Java编译器->错误/警告->已弃用和受限制的API

也可以帮助你


如果问题仍然存在,你可以去找谁说Eclipse有一种称为访问限制的机制,以防止你意外使用Eclipse认为不属于公共API的类。

从构建路径中删除JRE系统库并将其重新添加。 选择“添加库”并选择JRE系统库。默认值应该可以工作


BuildPath>>库

您正在使用Eclipse吗?是的,我正在使用Eclipse。