为什么会出现IllegalArgumentException:Bad port:0?

时间:2017-01-31 13:43:37

标签: java jetty illegalargumentexception

我有这个例外。我试图制作码头服务器。根据想法,它必须是Handler []参数,它是,但这个例外。我不知道我需要改变什么。有人可以帮忙吗?

 public static void main(String[] args) {
    Server server = new Server();
    ServerConnector connector = new ServerConnector(server);
    connector.setPort(8080);
    server.addConnector(connector);
    ResourceHandler resourceHandler = new ResourceHandler();
    resourceHandler.setDirectoriesListed(true);
    resourceHandler.setWelcomeFiles(new String[]{ "index.html" });
    resourceHandler.setResourceBase(".");
    HandlerList handlers = new HandlerList();
    handlers.setHandlers(new Handler[]{new SocketHandler(), resourceHandler}); //#27
    server.setHandler(handlers);
    try {
        server.start();
        server.join();
    }
    catch (Throwable t){
        t.printStackTrace(System.err);
    }
}

我得到了这个例外

  

java.lang.reflect.InvocationTargetException       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)       at java.lang.reflect.Method.invoke(Method.java:498)       在org.codehaus.mojo.exec.ExecJavaMojo $ 1.run(ExecJavaMojo.java:293)       在java.lang.Thread.run(Thread.java:745)       引起:java.lang.IllegalArgumentException:错误的端口:0       在java.util.logging.SocketHandler.connect(SocketHandler.java:160)       在java.util.logging.SocketHandler。(SocketHandler.java:125)       at our.arti.JettyServerArti.JettyStarter.main(JettyStarter.java:27)       ......还有6个

如果您需要更具体的详细信息,请与我们联系。

2 个答案:

答案 0 :(得分:1)

内部堆栈跟踪有一些您可能错过的详细信息。

Caused by: java.lang.IllegalArgumentException: Bad port: 0
at java.util.logging.SocketHandler.connect(SocketHandler.java:160)
at java.util.logging.SocketHandler.<init>(SocketHandler.java:125)

请注意,SocketHandler.<init>失败,而不是setHandlers()来电;错误是Bad port: 0。所以,如果你正在试图理解setHandlers()的参数,那可能会让错误的树吠...

那么new SocketHandler()是关于什么的?这就是你应该研究的......

答案 1 :(得分:0)

正如@Mark指出的那样,问题在于使用SocketHandler。您使用错误的对象作为参数。查看您的错误,您的处理程序列表中不会出现java.util.logging.SocketHandler类型的对象。它应该是org.eclipse.jetty.server.handler类型。 试试这个:  handlers.setHandlers(new Handler[] { resourceHandler, new DefaultHandler() });