Java 为什么存在IllegalArgumentException:坏端口:0?

Java 为什么存在IllegalArgumentException:坏端口:0?,java,jetty,illegalargumentexception,Java,Jetty,Illegalargumentexception,我有一个例外。我试着做jetty服务器。根据idea,它必须是Handler[]参数,确实是,但这个例外。我不知道我需要改变什么。有人能帮忙吗 public static void main(String[] args) { Server server = new Server(); ServerConnector connector = new ServerConnector(server); connector.setPort(8080); server.a

我有一个例外。我试着做jetty服务器。根据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(本机方法)处 位于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) 运行(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
at java.util.logging.SocketHandler.connect(SocketHandler.java:160)
at java.util.logging.SocketHandler.<init>(SocketHandler.java:125)
原因:java.lang.IllegalArgumentException:坏端口:0
位于java.util.logging.SocketHandler.connect(SocketHandler.java:160)
位于java.util.logging.SocketHandler。(SocketHandler.java:125)
请注意,失败的是
SocketHandler.
,而不是
setHandlers()
调用;错误是
坏端口:0
。因此,如果您在理解
setHandlers()
的参数时遇到麻烦,那么可能是找错了方向


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

正如@Mark所指出的,问题在于使用SocketHandler。您使用了错误的对象作为参数。看看您的错误,处理程序列表中不需要java.util.logging.SocketHandler类型的对象。它应该是org.eclipse.jetty.server.handler类型。 请尝试以下方法:
handlers.setHandler(新处理程序[]{resourceHandler,新DefaultHandler()})

如果仔细阅读,您的异常将看到:由以下原因引起:java.lang.IllegalArgumentException:坏端口:0,这意味着
连接器.setPort(8080)工作不正常。。。您调试过了吗,是否有有效的
服务器
连接器
实例?@JordiCastilla在这个程序中使用的是一个处理程序,而不是8080处理程序port@JordiCastilla-接近,但这不是它的意思。请看下面我的答案;例外是由
new SocketHandler()
调用的初始值设定项,它对您提到的调用所使用的
ServerConnector
一无所知。@MarkAdelsberger您可能是对的,我只是在对问题进行编辑后猜测而已。。。无论如何,因为你的答案可以解释这个问题,IMHO没有提供这个问题的解决方案,而是提供了一个新的问题。。。你们能详细解释一下OP应该做什么吗?抱歉,伙计们,我太愚蠢了,但今天它毫无例外地开始了,我还没有改变hothing。也许港口就在附近,我不知道。谢谢大家,java.util.logging配置文件是我查找SocketHandler设置的地方。