Java HttpServer 错误:访问限制:“HttpServer”类型不是 API

use*_*256 5 java

我试图用 javaHttpServer类做一些事情。

这是文档中的最小示例:

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

但我收到此错误消息:

描述资源路径位置类型访问限制:类型'HttpServer'不是API(对所需库'/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/rt.jar'的限制) Main .java /test/src/test 第 7 行 Java 问题

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

Mar*_*her 5

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

为了仍然能够使用这个类,请查看这个问题的答案:由于对所需库 rt.jar 的限制,对类的访问限制?.