2017-01-31 29 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(本機方法) 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java :62) at org.codehaus.mojo.exec.ExecJavaMojo $ 1上的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) 。運行(ExecJavaMojo.java:293) at java.lang.Thread.run(Thread.java:745) 引發:java.lang.IllegalArgumentException:錯誤端口:0 at 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

如果你仔細閱讀你的異常將看到:java.lang.IllegalArgumentException異常:錯誤的端口:通過_Caused 0_,這意味着'connector.setPort(8080);'不正常.. 。你有沒有調試過,有沒有一個有效的'server'和'connector'實例? –

+0

@JordiCastilla @JordiCastilla在這個程序中是一個處理程序,而不是處理程序它正在與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) 

請注意,這是失敗的,而不是setHandlers()呼叫SocketHandler.<init>;並且錯誤是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() });

相關問題