2017-01-31 21 views
0

У меня есть это исключение. Я пытался сделать причал. По идее, это должен быть аргумент Handler [], и это, но это исключение. Я понятия не имею, что мне нужно изменить. Может ли кто-нибудь помочь?Почему существует IllegalArgumentException: Плохой порт: 0?

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) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke (Method.java:498) at org.codehaus.mojo.exec.ExecJavaMojo $ 1. (ExecJavaMojo.java:293) at java.lang.Thread.run (Thread.java:745) Вызвано: java.lang.IllegalArgumentException: Плохой порт: 0 по адресу java.util.logging.SocketHandler.connect (SocketHandler.java:160) at java.util.logging.SocketHandler. (SocketHandler.java:125) в our.arti.JettyServerArti.JettyStarter.main (JettyStarter.java:27) ... 6 более

Если вам нужна более конкретная подробности дайте мне знать.

+0

если вы внимательно прочитать ваше исключение см: _Caused по: java.lang.IllegalArgumentException: Плохой порт: 0_, что означает 'connector.setPort (8080),' не работает должным образом .. вы отлаживаете ли вы, есть ли действительные экземпляры 'server' и' connector'? –

+0

@JordiCastilla, когда в этой программе был один обработчик вместо Handlers, он работал с портом 8080 – Artemon

+0

@JordiCastilla - закрыть, но это не то, что это значит. См. Мой ответ ниже; исключение - из инициализатора, вызываемого 'new SocketHandler()', который ничего не знает о 'ServerConnector', на котором вы вызываете упомянутый вами вызов. –

ответ

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()? Это то, что вы должны исследовать ...

+0

Файл конфигурации java.util.logging - это то место, где я бы искал установку SocketHandler. –

0

Как заметил @Mark, проблема заключается в использовании SocketHandler. вы используете неправильный объект в качестве параметра. Посмотрите на свою ошибку, объект типа java.util.logging.SocketHandler не ожидается в вашем списке обработчиков. он должен быть типа org.eclipse.jetty.server.handler. попробуйте вместо этого: handlers.setHandlers(new Handler[] { resourceHandler, new DefaultHandler() });