2017-01-31 12 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); 
    } 
} 

私はNativeMethodAccessorImpl.java(sun.reflect.NativeMethodAccessorImpl.invokeでsun.reflect.NativeMethodAccessorImpl.invoke0で

にjava.lang.reflect.InvocationTargetException (ネイティブメソッド) この例外を取得:java.lang.reflect.Method.invokeでsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) (Method.java:498)の62) org.codehaus.mojo.exec.ExecJavaMojo $ 1での。実行する(ExecJavaMojo.java:293) の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。our.arti.JettyServerArti.JettyStarter.mainで(SocketHandler.java:125) (JettyStarter.java:27) ... 6もっと

あなたはより具体的な必要がある場合詳細は私に知らせる。

+0

を注意深く読めば、あなたの例外が表示されます。java.lang.IllegalArgumentExceptionが:によって_Caused悪いポート:0_、 'connector.setPort(8080)を意味し;'正常に動作していません。..あなたはデバッグしましたか、有効な 'server'と' connector'インスタンスがありますか? –

+0

@JordiCastillaこのプログラムではハンドラが代わりにハンドラが8080ポートで動作していた – Artemon

+0

@JordiCastilla - 閉じるが、それは意味しない。下の私の答えを見てください。例外は 'new SocketHandler()'によって呼び出されるイニシャライザからのものであり、あなたが言及した呼び出しが行われる 'ServerConnector'の何も知らない。 –

答えて

1

内側のスタックトレースには、あなたが見逃したかもしれない2つの詳細があります。

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

@マークが指摘したように、問題はSocketHandlerの使用にあります。パラメータとして間違ったオブジェクトを使用しています。あなたのエラーを見て、java.util.logging.SocketHandler型のオブジェクトは、あなたのハンドラのリストで期待されていません。 org.eclipse.jetty.server.handler型である必要があります。 代わりにこれを試してみてください。 handlers.setHandlers(new Handler[] { resourceHandler, new DefaultHandler() });

関連する問題