我有这个例外。我试图制作码头服务器。根据想法,它必须是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个
如果您需要更具体的详细信息,请与我们联系。
答案 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() });