com.sun.net.httpserver错误,是什么意思?

时间:2015-08-19 20:09:28

标签: java permission-denied httpserver socketexception

我的代码如下所示:

    import com.sun.net.httpserver.*;
    import java.net.InetSocketAddress;
    ...

    void Srart_Server()
    {
      ....
      InetSocketAddress addr=new InetSocketAddress(80);
      HttpServer server=HttpServer.create(addr,0);      // Line : 32

它在我的电脑上运行正常,但在我将应用程序复制到Linux并运行它之后,我收到以下错误:

java.net.SocketException: Permission denied
        at sun.nio.ch.Net.bind0(Native Method)
        at sun.nio.ch.Net.bind(Net.java:433)
        at sun.nio.ch.Net.bind(Net.java:425)
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
        at sun.net.httpserver.ServerImpl.<init>(ServerImpl.java:100)
        at sun.net.httpserver.HttpServerImpl.<init>(HttpServerImpl.java:50)
        at sun.net.httpserver.DefaultHttpServerProvider.createHttpServer(DefaultHttpServerProvider.java:35)
        at com.sun.net.httpserver.HttpServer.create(HttpServer.java:130)
        at Http_Server.Srart_Server(Http_Server.java:32)

为什么?如何解决?

1 个答案:

答案 0 :(得分:4)

远程计算机上的防火墙(linux)不允许您的Java代码打开端口。这需要根据Linux发行版和防火墙(+网络设置)进行修复。

作为一种可能的修复方法,您可以尝试打开端口8080.某些unix计算机将为root用户保留1024以下的所有端口。