我必须通过ant任务执行编译的Java服务器以进行分配,以便我可以为它构建客户端。 我没有服务器的代码,但它应该在启动后运行在localhost的8181端口上。它在Windows和其他Linux机器上工作,但我不能在这个上运行(crunchbang)。 这是我得到的错误:
BUILD SUCCESSFUL
Total time: 1 second
root@drne:/home/wallen/uni/workspace/A5# ant run-server
Buildfile: /home/wallen/uni/workspace/A5/build.xml
setseed:
run-server:
[java] Exception in thread "main" com.sun.xml.internal.ws.server.ServerRtException: Server Runtime Error: java.net.BindException: Cannot assign requested address
[java] at com.sun.xml.internal.ws.transport.http.server.ServerMgr.createContext(ServerMgr.java:102)
[java] at com.sun.xml.internal.ws.transport.http.server.HttpEndpoint.publish(HttpEndpoint.java:63)
[java] at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.publish(EndpointImpl.java:171)
[java] at com.sun.xml.internal.ws.spi.ProviderImpl.createAndPublishEndpoint(ProviderImpl.java:113)
[java] at javax.xml.ws.Endpoint.publish(Endpoint.java:240)
[java] at it.polito.dp2.PJS.lab5.PJSInfoServer.main(Unknown Source)
[java] Caused by: java.net.BindException: Cannot assign requested address
[java] at sun.nio.ch.Net.bind0(Native Method)
[java] at sun.nio.ch.Net.bind(Net.java:344)
[java] at sun.nio.ch.Net.bind(Net.java:336)
[java] at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:199)
[java] at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
[java] at sun.net.httpserver.ServerImpl.<init>(ServerImpl.java:98)
[java] at sun.net.httpserver.HttpServerImpl.<init>(HttpServerImpl.java:50)
[java] at sun.net.httpserver.DefaultHttpServerProvider.createHttpServer(DefaultHttpServerProvider.java:35)
[java] at com.sun.net.httpserver.HttpServer.create(HttpServer.java:129)
[java] at com.sun.xml.internal.ws.transport.http.server.ServerMgr.createContext(ServerMgr.java:84)
[java] ... 5 more
[java] Java Result: 1
我尝试过的事情:
答案 0 :(得分:1)
this question的答案表明,如果名称“localhost”无法解析为IP地址,则可能会发生这种情况。检查您的/etc/hosts
文件,确保其中包含localhost
到地址127.0.0.1
的映射。
答案 1 :(得分:0)
我设法解决了什么给了我这个错误,正如我在开始时所说的那样,它与任何java代码无关:我的环回接口很奇怪。
ifconfig lo up
成功了。
答案 2 :(得分:0)
确保仔细检查要部署到的服务器地址。我在服务器地址上拼错了,我得到了完全相同的错误......
我正在使用Java 6中提供的附带的Web服务库。 7:
Endpoint.publish("http://myservername.com/myapi", new ServiceHandler(appSettings));
仔细检查“myservername.com”的值,这个假定是端口80。 如果你有一些其他端口(即8080),那么命令将如下所示:
Endpoint.publish("http://yourservername.com:8080/myapi", new ServiceHandler(appSettings));
希望有所帮助。