我有这个例外 . 我试图制作码头服务器 . 根据想法,它必须是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 回答
内部堆栈跟踪有一些您可能错过的详细信息 .
请注意,它是
SocketHandler.<init>
失败,而不是setHandlers()
调用;并且错误是Bad port: 0
. 所以,如果你正在敲打理解setHandlers()
的参数,那可能会咆哮错误的树......那么
new SocketHandler()
是关于什么的?这就是你应该研究的......正如@Mark指出的那样,问题在于使用SocketHandler . 您使用错误的对象作为参数 . 查看您的错误,您的处理程序列表中不会出现java.util.logging.SocketHandler类型的对象 . 它应该是org.eclipse.jetty.server.handler类型 . 试试这个:
handlers.setHandlers(new Handler[] { resourceHandler, new DefaultHandler() });