Ich habe eine seltsame Sache, wenn ich versuche, das Spring-Projekt in meiner Spring Tool Suite zu ändern. Beim ersten Laden (Bereitstellen) ist alles in Ordnung, die Anwendung wird kompiliert und läuft auf localhost: 8080
Wenn ich etwas im Code ändere und versuche, es erneut zu implementieren (erneut ausführen - als Spring-Boot-App ausführen), erhalte ich eine Fehlermeldung
**************************** Die Anwendung ist nicht startfähig
Beschreibung:
Der Tomcat-Connector, der für die Überwachung von Port 8080 konfiguriert ist, konnte nicht mit Start. Der Port ist möglicherweise bereits in Gebrauch oder der Connector kann .__ sein. falsch konfiguriert.
Aktion:
Überprüfen Sie die Konfiguration des Connectors, identifizieren und stoppen Sie jeden Prozess das Port 8080 überwacht, oder konfigurieren Sie diese Anwendung für das Hören an einem anderen Hafen.
2016-10-19 00: 01: 22.615 INFO 10988 --- [main] ationConfigEmbeddedWebApplicationContext: Schließen von org.springframework.boot[email protected]3023df74: Gründungsdatum [Mi Oct 19 00:01:19 CEST 2016]; Wurzel des Kontexts Hierarchie 2016-10-19 00: 01: 22.616 INFO 10988 --- [main] o.s.j.e.a.AnnotationMBeanExporter: Aufheben der Registrierung von JMX-exponiertem Bohnen beim Herunterfahren
Wenn ich den Prozess für diesen Port manuell herunterfahre, funktioniert alles wieder einwandfrei. Dies kann jedoch nicht der richtige Weg sein, um die Spring-App erneut bereitzustellen. Mache ich hier etwas falsch?
Ich verwende :: Spring Boot :: (v1.4.1.RELEASE)
P.S. Ich bin mir bewusst, dass ich eine Art Hot-Swap-Mechanismus einrichten kann, um das automatische Neuladen der Seite nach dem Ändern des Codes zu ermöglichen. Im Moment möchte ich dieses Problem jedoch zuerst beheben.
Vielen Dank für jede Art von Hilfe oder Informationen.
Es kommt manchmal vor, dass in IDE mit Hilfe der - roten Taste keine Prozesse mehr ausgeführt werden, und der gleiche Fehler weiterhin auftritt.
Es wurde mit folgenden Schritten gelöst:
Überprüfen Sie, welche Prozesse an verfügbaren Ports ausgeführt werden
netstat -ao |find /i "listening"
Wir bekommen folgen
TCP 0.0.0.0:7981 machinename:0 LISTENING 2428
TCP 0.0.0.0:7982 machinename:0 LISTENING 2428
TCP 0.0.0.0:8080 machinename:0 LISTENING 12704
TCP 0.0.0.0:8500 machinename:0 LISTENING 2428
portnummern und welche Prozess-ID sie hören
Stoppen Sie den Prozess an Ihrer Portnummer (in diesem Fall ist es 8080 und Prozess-ID ist 12704)
Taskkill /F /IM 12704
(Hinweis: Richtige Prozess-ID angeben)
Mein Problem wurde damit gelöst. Hoffe, das hilft!
In meinem Fall trat der Fehler auf, da die Anwendung nicht auf den Keystore für SSL zugreifen konnte.
Das Starten der Anwendung als root-Benutzer hat das Problem behoben.
Für Mac-Benutzer (OS X El Capitan): .__ Sie müssen den Port, auf dem localhost: 8080 ausgeführt wird, unter ..__ beenden. Dazu müssen Sie zwei Befehle im Terminal ausführen.
Sudo lsof -i tcp: 8080
töte -15 PID
NB! PID IS EINE NUMMER DES ERSTEN BEFEHLS.
Der erste Befehl gibt Ihnen die PID für den localhost: 8080. Ersetzen Sie die PID im zweiten Befehl durch die PID, die Sie mit dem ersten Befehl erhalten, um den auf localhost ausgeführten Prozess zu beenden: 8080.
Wenn auf Ihrer Konsole ein Fehler aufgetreten ist: „Der eingebettete Servlet-Container konnte nicht gestartet werden. Port 8080 wurde bereits verwendet. “Wechseln Sie dann zur Datei application.properties und fügen Sie diese Eigenschaft„ server.port = 8090 “hinzu.
Der Standardport für Spring Boot ist 8080. Wenn Sie an diesem Port etwas anderes haben, wird der obige Fehler angezeigt. Daher bitten wir Spring Boot, auf einem anderen Port zu laufen, indem Sie in der Datei application.properties "server.port = 8090" hinzufügen.
Dies ist ein typischer Startfehler, da der Port des embedded Servlet-Containers verwendet wird.
Der eingebettete Tomcat-Container konnte nicht gestartet werden, da Port 8080 bereits verwendet wurde.
Identifizieren und stoppen Sie den Prozess, der Port 8080 überwacht, oder konfigurieren Sie diese Anwendung (in Ihrer Datei application.properties), um einen anderen Port zu überwachen.
Es gibt zwei Möglichkeiten, um dieses Problem zu beheben. Versuchen Sie zuerst Option 1, wenn dies nicht funktioniert, probieren Sie Option 2 aus, und Ihr Problem ist gelöst.
1) In der rechten oberen Ecke Ihrer Konsole befindet sich ein roter Button. Um die Spring Boot-Anwendung zu stoppen, die bereits an diesem Port ausgeführt wird, klicken Sie einfach auf den roten Button, um den Vorgang zu beenden.
2) Wenn die rote Schaltfläche nicht aktiviert ist, klicken Sie mit der rechten Maustaste auf die Konsole und wählen Sie Alle beenden/trennen. Hoffe das hilft.
Bonus-Tipp: - Wenn Sie Ihren Server an einem anderen Port Ihrer Wahl ausführen möchten, erstellen Sie im Ressourcenordner Ihres Maven-Projekts eine Datei mit dem Namen application.properties und schreiben Sie server.port = 3000, um Ihre Anwendung auf Port 3000 auszuführen
Der Grund ist, dass ein Servlet-Container bereits an Port 8080 ausgeführt wird und Sie versuchen, einen anderen an Port 8080 auszuführen.
Überprüfen Sie, welche Prozesse an verfügbaren Ports ausgeführt werden.
netstat -ao |find /i "listening"
Klicken Sie hier, um das Bild anzuzeigen ODER netstat -ano | find "8080"
(Hinweis: 8080 ist der Start des Portfehlers) Klicken Sie hier, um das Bild anzuzeigenTaskkill /F /IM 6592
(Hinweis: Richtige Prozess-ID angeben) Klicken Sie hier, um image .__ anzuzeigen. Klicken Sie mit der rechten Maustaste auf die Konsole und wählen Sie terminate/disconnect all.Gehen Sie zum Task-Manager und beenden Sie die Java (tm) -Plattform über binär. Klicken Sie hier, um imagehttps://www.google.com/search?q=what+ anzuzeigen ist + Java (tm) + Plattform + se + binär & oq = was + ist + Java (tm) + Plattform + se + binär & aqs = chrome..69i57.26349j1j7 & sourceid = chrome & dh = UTF-8
Mache ich hier etwas falsch?
Ja, das bist Du. Ein Servlet-Container ist bereits auf Port 8080 ausgeführt, und Sie versuchen erneut, einen weiteren Port 8080 auszuführen.
Starten Sie den Server entweder neu (wenn in STS dafür eine Schaltfläche vorhanden ist) oder stoppen und starten Sie ihn
Öffnen Sie "localhost: 8080" in Ihrem Browser und sehen Sie, was auf diesem Port ausgeführt wird. Ich tat es und fand Oracle 10g XE im Hintergrund ausgeführt. Ich ging zu start-> Services und stoppte alle Oracle-Services. Dann wiederhole ich mvnw spring-boot:run
auf IntelliJ und es läuft wie von Zauberhand.
Klicken Sie einfach auf die rote Schaltfläche, um alle Dienste auf Eclipse zu beenden, und führen Sie die Anwendung als Spring Boot-Anwendung erneut aus. Dies hat für mich funktioniert.
das Erstellen einer einfachen Zeile in application.properties mit SERVER_PORT = 8090 hat das Problem gelöst.
Speichern Sie auf einer Linux-Maschine das Bash-Skript und führen Sie es aus. Wenn Sie den Port 8080 freigeben möchten, geben Sie bei Aufforderung 8080 ein
echo "Enter port number to be closed :: "
read port
Sudo kill $(Sudo lsof -t -i:$port)
Erstellen Sie eine application.properties
-Datei im Ordner src/main/resources
und schreiben Sie den Inhalt als
server.port = 8084
Es läuft gut . Aber vor jedem Lauf muss die Anwendung zuerst durch Klicken auf die rote Schaltfläche oben in der IDE .__ beendet werden.
oder Versuche
Klicken Sie mit der rechten Maustaste auf die Konsole und klicken Sie auf Beenden/Alle trennen
Es gibt einige Prozesse, die im Hintergrund an diesem Port verbleiben. Dieses Problem kann aus verschiedenen Gründen auftreten. Sie können dieses Problem jedoch leicht lösen, wenn Sie den Prozess beenden, der mit 8080 oder Spring zusammenhängt.
Wenn Sie Linux verwenden, gibt es Schritte zum Beenden des Prozesses:
dadurch wird der Prozess abgebrochen, der am 8080-Port verbleibt, und Sie können die Anwendung ausführen.
Wenn Sie ein Linux-System verwenden, verwenden Sie den folgenden Befehl.
fuser -k some_port_number/tcp
- das wird diesen Prozess abbrechen.
Stichprobe:-
fixiereinheit -k 8080/tcp
Keine Notwendigkeit, eine Anwendung jedes Mal zum Zeitpunkt der Entwicklung manuell zu starten, um Änderungen zu implementieren. Verwenden Sie dazu die Abhängigkeit von Spring-Boot-Devtool-Maven.
Automatischer Neustart: Um das Modul zu verwenden, müssen Sie es einfach als Abhängigkeit in Ihren Maven POM einfügen:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
Wenn Sie das Modul spring-boot-devtools enthalten haben, lösen alle Änderungen an der Klassenpfaddatei automatisch einen Neustart der Anwendung aus. Wir machen einige Tricks, um einen schnellen Neustart zu erreichen. Für viele Anwendungen im Mikroservice-Stil ist diese Technik möglicherweise ausreichend.
In der Spring-Boot-Anwendung (unter Verwendung des Spring Starter-Projekts) verfügen wir über einen Aktualisierungsport in Server.xml mit einem Tomcat-Server und fügen diesen Port in application.property (insrc/main/resources) .__ hinzu. Der Code lautet server.port = 8085
Und aktualisieren Sie Maven Project und führen Sie dann die Anwendung aus