2016-12-12 4 views
1

Java HttpServerクラスで何かをしようとしていました。Java HttpServerエラー:アクセス制限:タイプ 'HttpServer'がAPIではありません

これは、ドキュメントからの最低限の例です。これはでも、どういう意味

Description Resource Path Location Type Access restriction: The type 'HttpServer' is not API (restriction on required library '/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home/jre/lib/rt.jar') Main.java /test/src/test line 7 Java Problem

:?

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(); 
} 

しかし、私は、このエラーメッセージが表示されますかOracleのドキュメントによると、これはうまくいくはずです。あるいは、私はこれを間違っていますか?

+0

Eclipseを使用していますか? – Berger

+0

はい、私は日食を使用しています。 – user2393256

答えて

1

エラーメッセージは、そのライブラリの公式APIに含まれていないコードにアクセスしているとします。より具体的には、com.sun.net.httpserver.HttpServerは、すべてのJava 8ランタイム実装に含まれるとは保証されないクラスです。そのため、Javaのインストールによっては、そのクラスを使用するコードが失敗することがあります。

このクラスを引き続き使用できるようにするには、Access restriction on class due to restriction on required library rt.jar?の回答を見てください。

2

は、Sunの内部パッケージを使用する必要があることをそうは思いませんが、それでも、あなたはエラーを無効にしてみてくださいすることができます

ゴーの特性を投影する - > Javaコンパイラ - >エラー/警告 - >非推奨と制限されたAPI

this postもお手伝いします。

Christian Hujer's answerと言う人には、EclipseがパブリックAPIの一部ではないと思われるクラスを誤って使用することを防ぐためのアクセス制限というメカニズムがあります。

関連する問題