2017-01-31 4 views
0

Ich habe diese Ausnahme. Ich habe versucht, Anlegesteg Server zu machen. Nach der Idee muss es Handler [] Argument sein, und es ist, aber diese Ausnahme. Ich habe keine Ahnung, was ich ändern muss. Kann jemand helfen?Warum ist IllegalArgumentException: Bad port: 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); 
    } 
} 

Ich erhalte diese Ausnahme

java.lang.reflect.InvocationTargetException bei sun.reflect.NativeMethodAccessorImpl.invoke0 (Mutter Methode) bei sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java : 62) bei sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) bei java.lang.reflect.Method.invoke (Method.java:498) bei org.codehaus.mojo.exec.ExecJavaMojo $ 1. run (ExecJavaMojo.java:293) bei java.lang.Thread.run (Thread.java:745) verursacht durch: java.lang.IllegalArgumentException: Fehlerhafter Port: 0 bei java.util.logging.SocketHandler.connect (SocketHandler.java:160) bei java.util.logging.SocketHandler. (SocketHandler.java:125) bei our.arti.JettyServerArti.JettyStarter.main (JettyStarter.java:27) ... 6 weitere

Wenn Sie spezifischere brauchen Details lassen Sie mich wissen.

+0

wenn Sie sorgfältig Ihre Ausnahme lesen sehen: _Caused von: java.lang.IllegalArgumentException: Bad Hafen: 0_, das heißt 'connector.setPort (8080);' nicht richtig funktioniert .. Haben Sie debugged, gibt es eine gültige 'Server' und' Connector' Instanzen? –

+0

@JordiCastilla, wenn in diesem Programm ein Handler statt Handler war es mit 8080 Port – Artemon

+0

@JordiCastilla arbeiten - in der Nähe, aber das ist es nicht, was es bedeutet. Siehe meine Antwort unten; Die Ausnahme ist von dem Initialisierer, der von 'new SocketHandler()' aufgerufen wird, der nichts von dem 'ServerConnector' kennt, auf dem der von Ihnen erwähnte Aufruf ausgeführt wird. –

Antwort

1

Der innere Stack-Trace hat ein paar Details, die Sie möglicherweise verpasst haben.

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) 

Beachten Sie, dass es die SocketHandler.<init> ist, dass nicht die setHandlers() Anruf versagt; und der Fehler ist Bad port: 0. Also, wenn Sie Ihren Kopf auf das Verständnis der Parameter zu setHandlers() hämmern, ist das wahrscheinlich bellt den falschen Baum ...

Also was ist die new SocketHandler() über? Das ist, was Sie erforschen sollten ...

+0

In der Konfigurationsdatei java.util.logging suche ich nach dem SocketHandler-Setup. –

0

Wie @Mark wies darauf hin, ist das Problem in der Verwendung von SocketHandler. Sie verwenden ein falsches Objekt als Parameter. Sehen Sie sich Ihren Fehler an, das Objekt vom Typ java.util.logging.SocketHandler wird in Ihrer Liste der Handler nicht erwartet. Es sollte vom Typ org.eclipse.jetty.server.handler sein. versuchen Sie stattdessen: handlers.setHandlers(new Handler[] { resourceHandler, new DefaultHandler() });