当前位置: 首页 > 知识库问答 >
问题:

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

晏德佑
2023-03-14

我试图使用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();
}

但我会收到以下错误消息:

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

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

共有1个答案

暴奕
2023-03-14

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

为了仍然能够使用这个类,请研究以下问题的答案:由于对所需库RT.jar的限制,对类的访问限制?。

 类似资料:
  • 我正试图将旧项目转换为maven项目。但是当project是maven时,它会在带有Import的类上显示警告: 访问限制:类型'Base64Decoder'不是API(对所需库'C:\Program Files\java\jre7\lib\rt.jar'的限制)

  • 问题内容: 这是代码: 这是错误: eclipse says this: 访问限制:类型“应用程序”不是API(对所需库“ /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home/jre/lib/rt.jar”的限制) 问题答案: 这也发生在我身上,这里给出的答案已经不令人满意,所以我做了自己的研究。 背景:Eclipse 访

  • 代码如下: eclipse是这样说的: 访问限制:类型“Application”不是API(对所需库“/library/java/javavirtualmachines/jdk1.8.0_11.jdk/contents/home/jre/lib/rt.jar”的限制)

  • 我已经在网上搜索了这个问题,并找到了许多线程,给出了一个接近我一直遭受的问题的解决方案。 我收到一个访问限制错误,如下所述:访问限制:由于对所需库/opt/java/jdk1.8.0_31/jre/lib/rt.jar的限制,无法访问类型JFrame 在我的代码中,JFrame和JPanel下面有红线 我在这些线程中执行了所需的操作,但问题是尚未解决的访问限制:由于对所需库JDK1.6.0\jre

  • 在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的name、score属性: >>> bart = Student('Bart Simpson', 98) >>> bart.score 98 >>> bart.score = 59 >>> bart.sc

  • 在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。 但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的name、score属性: >>> bart = Student('Bart Simpson', 59) >>> bart.score 59 >>> bart.score = 99 >>> bart.sc