Spring Tool Suite内でSpringプロジェクトを変更しようとすると、奇妙なことがあります。最初のロード(デプロイ)ですべてが正常になり、アプリケーションはlocalhost:8080でコンパイルおよび実行されます
コード内の何かを変更して再デプロイしようとすると(もう一度実行-Spring Bootアプリとして実行)エラーメッセージが表示されます
***************************アプリケーションを開始できませんでした
説明:
ポート8080でリッスンするように構成されたTomcatコネクターを開始できませんでした。ポートがすでに使用されているか、コネクタが正しく構成されていない可能性があります。
アクション:
コネクタの構成を確認し、ポート8080でリッスンしているプロセスを特定して停止するか、このアプリケーションを別のポートでリッスンするように構成します。
2016-10-19 00:01:22.615 INFO 10988 --- [main] ationConfigEmbeddedWebApplicationContext:Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@3023df74:開始日[Wed Oct 19 00:01:19 CEST 2016];コンテキスト階層のルート2016-10-19 00:01:22.616 INFO 10988 --- [main] o.s.j.e.a.AnnotationMBeanExporter:シャットダウン時にJMXに公開されたBeanの登録解除
そのポートでプロセスを手動でシャットダウンすると、すべてが再び正常に機能しますが、これはSpringアプリを再デプロイする正しい方法ではありません。ここで何か間違ったことをしていますか?
:: Spring Boot ::(v1.4.1.RELEASE)を使用しています
追伸コードを変更した後、ページを自動的にリロードするように何らかのホットスワップメカニズムをセットアップできることは承知していますが、今のところはまずこの問題を解決したいと思います。
あらゆる種類のヘルプや情報をありがとう。
赤いボタンの助けを借りてIDEでプロセスの実行を停止しても、時々同じエラーが発生します。
次の手順で解決されましたが、
使用可能なポートで実行されているプロセスを確認します
netstat -ao |find /i "listening"
フォローする
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
つまり、ポート番号と何プロセスIDがリッスンしている
ポート番号で実行中のプロセスを停止します(この場合は8080で、プロセスIDは12704です)
Taskkill /F /IM 12704
(注:正しいプロセスIDに言及)
私の問題はこれで解決されました、これが役立つことを願っています!
Macユーザーの場合(OS X El Capitan):localhost:8080が実行されているポートを強制終了する必要があります。これを行うには、ターミナルで2つのコマンドを実行する必要があります。
Sudo lsof -i tcp:8080
-15 PIDを殺す
NB! PID IS最初のコマンドによって提供される番号。
最初のコマンドは、localhost:8080のPIDを提供します。 2番目のコマンドのPIDを、localhost:8080で実行されているプロセスを強制終了するために最初のコマンドで指定したPIDに置き換えます。
私の場合、アプリケーションがsslのキーストアにアクセスできなかったため、エラーが発生しました。
Rootユーザーとしてアプリケーションを起動すると、問題が修正されました。
理由は、1つのサーブレットコンテナがポート8080で既に実行されており、ポート8080で別のサーブレットコンテナを実行しようとしているためです。
使用可能なポートで実行されているプロセスを確認します。
netstat -ao |find /i "listening"
画像を表示するにはここをクリック OR netstat -ano | find "8080"
(注:8080はポートの起動に失敗します) 画像を表示するにはここをクリックTaskkill /F /IM 6592
(注:正しいプロセスIDに言及) 画像を表示するにはここをクリック 右クリックコンソールで、すべてを終了/切断するを選択しますタスクマネージャに移動して、Java(tm)プラットフォームse binary画像を表示するにはここをクリックhttps:/ /www.google.com/search?q=what+is+Java(tm)+platform+se+binary&oq=what+is+Java(tm)+platform+se+binary&aqs=chrome..69i57.26349j1j7&sourceid=chrome&ie= UTF-8
「埋め込みサーブレットコンテナの起動に失敗しました。次に、application.propertiesファイルに移動して、このプロパティ「server.port = 8090」を追加します。
実際、スプリングブートのデフォルトポートは8080です。そのポートに何か他のものがある場合、上記のエラーが発生します。したがって、application.propertiesファイルに「server.port = 8090」を追加して、スプリングブートを他のポートで実行するように要求しています。
この問題を解決するには、2つの方法があります。最初にオプション1を試し、それが機能しない場合は、オプション2を試し、問題を解決します。
1)コンソールの右上隅に赤いボタンがあります。このポートで既に実行されているスプリングブートアプリケーションを停止するには、赤いボタンをクリックして終了します。
2)赤いボタンがアクティブになっていない場合は、コンソールを右クリックして、すべて終了/切断を選択する必要があります。お役に立てれば。
ボーナスヒント:-選択した別のポートでサーバーを実行する場合は、mavenプロジェクトのリソースフォルダーにapplication.propertiesという名前のファイルを作成し、server.port = 3000と記述して、ポート3000でアプリケーションを実行します。
これは、埋め込みサーブレットコンテナのポートが使用されているために発生する一般的な起動エラーです。
ポート8080がすでに使用されていたため、埋め込みTomcatコンテナを開始できませんでした。
ポート8080でリッスンしているプロセスを特定して停止するか、別のポートでリッスンするようにこのアプリケーションを構成します(application.properties file)。
ここで何か間違ったことをしていますか?
はい、そうです。 1つのサーブレットコンテナがポート8080で既に実行されており、ポート8080で別のサーブレットコンテナを再度実行しようとしています。
サーバーを再起動する(STSにボタンがある場合)または停止して起動する
application.properties
フォルダーの下にsrc/main/resources
ファイルを作成し、コンテンツを
server.port = 8084
順調です。ただし、実行前に毎回、IDEの上部にある赤いボタンをクリックして、最初にアプリケーションを停止する必要があります。
または試す
コンソールを右クリック>終了/すべて切断をクリック
ブラウザで「localhost:8080」を開き、このポートで実行されているものを確認します。私はそれをして、Oracle 10g XEがバックグラウンドで実行されているのを見つけたので、start-> Servicesに行き、すべてのOracleサービスを停止しました。その後、IntelliJでmvnw spring-boot:run
をやり直し、魔法のように実行します。
アプリケーションをSpring Bootアプリケーションとして再実行するよりも、Eclipse上のすべてのサービスを停止するには、赤いボタンをクリックするだけです-これでうまくいきました。
こんにちは、application_propertiesにSERVER_PORT = 8090として単純な行を作成すると、問題が解決しました。
Linuxマシンで、bashスクリプトを保存して実行します。ポート8080を解放する場合は、プロンプトが表示されたら8080を入力します
echo "Enter port number to be closed :: "
read port
Sudo kill $(Sudo lsof -t -i:$port)
そのポートのバックグラウンドにはいくつかのプロセスが残っており、いくつかの理由でこの問題が発生する可能性がありますが、8080またはSpringに関連するプロセスを終了すると簡単に解決できます。
Linuxを使用している場合、プロセスを終了する手順があります。
これにより、8080ポートに残っているプロセスが強制終了され、アプリケーションを実行できます。
Spring Bootアプリケーション(Spring Starterプロジェクトを使用)では、Tomcatサーバーを使用してServer.xmlにポートを更新し、application.property(insrc/main/resources)にこのポートを追加します。コードはserver.port = 8085 =
そして、Mavenプロジェクトを更新してからアプリケーションを実行します
Linuxシステムを使用している場合は、次のコマンドを使用します。
fuser -k some_port_number/tcp
-そのプロセスを強制終了します。
サンプル:-
フューザー-k 8080/tcp
変更を実装するために開発時に毎回手動でアプリケーションを起動する必要はありません。「spring-boot-devtool」maven依存関係を使用します。
自動再起動:モジュールを使用するには、Maven POMに依存関係として追加するだけです。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
Spring-boot-devtoolsモジュールが含まれている場合、クラスパスファイルを変更すると、アプリケーションの再起動が自動的にトリガーされます。再起動を高速に保つためにいくつかのトリックを行うため、多くのマイクロサービススタイルのアプリケーションでは、この手法で十分な場合があります。