首页 文章

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

提问于
浏览
0

我有这个例外 . 我试图制作码头服务器 . 根据想法,它必须是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);
    }
}

我得到了这个例外

sun.reflect.DeativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.invoke:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)的sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)中的java.lang.reflect.InvocationTargetException java.lang.Thread.run上的org.codehaus.mojo.exec.ExecJavaMojo $ 1.run(ExecJavaMojo.java:293)中的java.lang.reflect.Method.invoke(Method.java:498)(Thread.java: 745)引起:java.lang.IllegalArgumentException:错误端口:java.util.logging.SocketHandler.connect(SocketHandler.java:160)的java端口:java.util.logging.SocketHandler . (SocketHandler.java:125) .arti.JettyServerArti.JettyStarter.main(JettyStarter.java:27)... 6个其他

如果您需要更多具体细节,请告知我们 .

2 回答

  • 0

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

    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

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

相关问题