【问题标题】:Why is there IllegalArgumentException: Bad port: 0?为什么会有 IllegalArgumentException: Bad port: 0?
【发布时间】:2023-03-29 18:30:01
【问题描述】:

我有这个例外。我正在尝试制作码头服务器。按照idea,一定是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 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 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) 在我们的.arti.JettyServerArti.JettyStarter.main(JettyStarter.java:27) ... 6 更多

如果您需要更具体的细节,请告诉我。

【问题讨论】:

  • 如果你仔细阅读你的异常会看到:Caused by: java.lang.IllegalArgumentException: Bad port: 0,这意味着connector.setPort(8080);没有正常工作...你调试了吗,有没有有效的serverconnector实例?
  • @JordiCastilla 当在这个程序中是一个处理程序而不是处理程序时,它正在使用 8080 端口
  • @JordiCastilla - 关闭,但这不是它的意思。请参阅下面的答案;例外来自 new SocketHandler() 调用的初始化程序,它对您提到的调用所在的 ServerConnector 一无所知。
  • @MarkAdelsberger 你可能是对的我只是在对问题进行编辑后猜测......无论如何,因为你的答案可以解释问题,恕我直言不提供这个问题的解决方案,而是一个新的问题...你能扩展/解释一下 OP 应该做什么吗?
  • 对不起,伙计们,我的愚蠢,但今天开始无一例外,我没有改变任何东西。也许港口就在附近,我不知道。谢谢大家

标签: java jetty illegalargumentexception


【解决方案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.&lt;init&gt;,而不是 setHandlers() 调用;错误是Bad port: 0。因此,如果您一头雾水地理解setHandlers() 的参数,那可能是找错了树……

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

【讨论】:

  • java.util.logging 配置文件是我寻找 SocketHandler 设置的地方。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    相关资源
    最近更新 更多