我试图用 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 文档,这应该可以工作。还是我弄错了?
错误消息想说明您正在访问的代码不属于该库的官方 API 的一部分。更具体地说,com.sun.net.httpserver.HttpServer是一个不能保证包含在所有 Java 8 运行时实现中的类。因此,在某些 Java 安装中,使用该类的代码可能会失败。
为了仍然能够使用这个类,请查看这个问题的答案:由于对所需库 rt.jar 的限制,对类的访问限制?.