2014-06-06 5 views
13

Ich benutze IntelliJ, eine Tomcat-Anwendung bereitstellen versucht, aber wenn ich versuche, es zu laufen, bekomme ich folgende Fehlermeldung:Lösung für "java.net.BindException: Adresse bereits verwendet" Fehler?

Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 1098; nested exception is: 
java.net.BindException: Address already in use 

Jetzt habe ich manuell für den Prozess in diesem Hafen geschieht sah über :

lsof -i:1098 

und ich fand den Java-Prozess und tötete es auch:

ps aux | grep java 

kill -9 20386 

und das funktionierte, aber ich habe diese JEDES MAL zu tun, ich IntelliJ öffnen. Wenn ich den Server erneut ausführen möchte, ohne Intellij zu beenden, kann ich das nicht, weil ich diesen Fehler bekomme. Kennt jemand eine dauerhafte Lösung dafür und tötet sie nicht einfach jedes Mal?

+0

es m eans, dass noch etwas an diesem Port läuft. Sie könnten versuchen, auf einem anderen Port zu laufen? –

+0

Ist nicht 1098 der Port für RMI? Vielleicht benutzt IntelliJ es. Nimm einfach einen anderen Port. –

+0

Nach @ThomasUhrig - versuchen Sie Port 8080, und sehen Sie, ob Sie noch ein Problem haben. –

Antwort

2

enter image description here Klicken Sie auf das Schädelsymbol, nachdem Sie den Server beendet haben, um alle zugehörigen Prozesse zu beenden. Dies sollte bei der Lösung des Portproblems helfen.

+0

Was ist die Voraussetzung dafür, diesen Schädelknopf zu sehen? Auf meinem Spring Boot-Projekt gibt es in der Symbolleiste keine solche Sache. – miro

+0

Entweder läuft Ihr Server noch, oder Sie haben gekündigt, und die Beendigung wurde nicht abgeschlossen. – Gayathri

-3

Ich stieß auf dieses Problem, ich habe nicht meine vorherige laufende App auf dem gleichen Port getötet. Ich habe es gerade mit Kill -9 PID getötet und mir ging es gut.

8

Dies liegt daran, dass JMX die Tomcat-Instanz überwacht. Tomcat wird auf Port 9999 laufen, so dass JMX nicht an diesen Port binden kann, wenn JMX nach dem Herunterfahren suchen möchte.

Eine Möglichkeit, dies zu beheben, besteht darin, die Umgebungsvariable CATALINA_OPTS zu definieren.

Das Festlegen dieser Eigenschaften in JAVA_OPTS versucht, einen JMX-Server zu starten, wenn Sie Tomcat starten UND wenn Sie Tomcat herunterfahren. Daher die bereits verwendete Port-Ausnahme. Sie müssen diese Eigenschaften für CATALINA_OPTS anstelle von JAVA_OPTS festlegen. Dies wird nur ausgeführt, wenn Sie Tomcat starten.

CATALINA_OPTS = "$ CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port = 8999" CATALINA_OPTS = "$ CATALINA_OPTS -Dcom.sun.management.jmxremote.ssl = false -Dcom .sun.management.jmxremote.authenticate = false“

Was für mich fixiert es in $ HOME/.bashrc ist füge ich diesen Export:

export CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8999"

Credit: https://bowerstudios.com/node/636

Verwandte Themen