IntellJ IDEでアプリケーションをデバッグモードで設定できないという問題がありますが、実行モードは問題ありません。
私のOSはWindows 7、IDEはIntellJ IDEA、WebコンテナはTomcat 6です。長い間試しましたが、HTTPポートとJMXポートを変更しましたが、機能しませんでした。
IntellJでデバッグモードでアプリをセットアップすると、失敗し、イベントログは次のようになります。
16:05:35 Tomcatの実行中にエラーが発生しました:デバッガーポートを開けません:Java.net.BindException "アドレスは既に使用中:JVM_Bind"。
任意の助けをいただければ幸いです。
問題の鍵はdebugger portにあります。私は同じ問題を抱えていました。ポート8081(httpポート)、1099(JMXポート)、Tomcatシャットダウンポート、すべてのJava.exeをリッスンしているすべてのプロセスを強制終了しましたが、それでも何もしませんでした。
事はこれですdebugger portは異なります。アプリケーションを実行すると、Tomcatが設定されているポート、8080、8081などを通過します。ただし、デバッグモードで実行すると、別のポートを経由します。
IntelliJからTomcat構成を編集する場合、最後のタブはStartup/Connectionです。 Debugモードの設定を確認すると、ポートが表示されます。私は50473でした。私はそれを50472に変更し、すべてが再び動き始めました。
私にとって、IntelliJ Event Log
(右下隅)には以下のログがありました:
Error running EntitmentTooling-Debug: Cannot run program "/path-to/Apache-Tomcat-8.5.15/bin/catalina.sh" (in directory "path-to/Apache-Tomcat-8.5.15/bin"): error=13, Permission denied
Error running EntitmentTooling-Debug: Unable to open debugger port (127.0.0.1:58804): Java.net.SocketException "Socket closed"
コマンド
$ chmod a+x /path-to/Apache-Tomcat-8.5.15/bin/catalina.sh
特権を十分に変更するために私のために働いた。
これは一貫して機能します(たとえば、統合テストを実行しているときにTomcatを再起動するなどのことを行うと、時々起こります)
1)ポート1099が開いているプロセスを見つける
Sudo netstat -anp | grep tcp | grep 1099
cp6 0 0 :::1099 :::* LISTEN 9857/Java
2)殺す
kill 9857
3)Tomcatを起動します。
Windows 7とIntellijIdea 14でも同じ問題が発生しました。CTRL+ ALT + EScを実行してJavaプロセスを強制終了し、Javaを見つけて強制終了しました。ここで再実行します。アプリケーションは再び問題ないはずです。コマンドラインまたはShell(linux)を使用して実行することもできますが、これは自分にとっては簡単なことです。
この方法で問題を解決しました。
詳細については、次のリンクを参照してください。
Tomcatを削除
新しいTomcatを追加する
この正確なメッセージがありました。
その理由は、いくつかのIDE(私はEclipseとIntellijを使用しています)がTomcatサーバーのシャットダウンに失敗したためです。または、クラッシュする前にクラッシュした可能性があります。
解決策は、C:\...\Apache-Tomcat-xxx\bin
に移動してshutdown
を実行することでした。
私のために働いた唯一のことは、Windowsのタスクマネージャに移動し、右クリック->タスクの終了で実行されているすべてのJavaプロセスを終了することです。
コンピューターのDNSミスが127.0.0.1 localhostであるため、同じ問題があります。 127.0.0.1 localhostをホストファイルに追加すると、OKになります。
コンピューターを再起動したときに、すべてが正常であることが時々起こります。おそらくポートの競合があります。
再起動中にJavaまたはTomcatのインスタンスが強制終了されるため、コンピューターが再起動します。タスクマネージャーから特定のプロセスを強制終了することも検討できます。
これは、context.xmlファイルに問題がある場合にも発生します。私の場合、誤ってコンテキスト値を変更していました。
私の場合、上記の方法はいずれも機能しませんでした。つまり、実行構成でのポート番号の変更、マシンの再起動、IntelliJでのキャッシュの無効化、netstatに表示されるプロセスの強制終了(nestat -anob | findstr <port-number>
、次にtskill <pid>
)です。最終的に助けたのは、startup.bat
およびshutdown.bat
を介してTomcatを手動で起動およびシャットダウンすることだけでした(LinuxおよびmacOSでは、対応する.sh
ファイルを使用する必要があります)。
これにはさまざまな理由があります。
-デバッガーのポートに問題がある可能性があります---解決するように変更してください(回答者: T.M )
-intellijキャッシュに問題がある可能性があります-キャッシュを無効にして再起動すると解決します( feng smith による回答)
-JMX、AJPなどの他のポートに問題がある可能性があります---これらのポート番号も変更してください。
これをコメントとして追加したかったが、十分な担当者がいなかった
IntelliJのTomcat構成のサーバータブで、JMXポートを別の番号に変更します。
デバッグ中にこの問題が発生しました:
私の場合、Tomcat/confフォルダーのserver.xmlに問題があり、別のコメントタグの下に追加のコメントタグがありました。したがって、server.xmlに問題があったため、Tomcatを起動できなかったと思います。さらに、TomcatフォルダーをインストールディレクトリからC:\ Users\username.IntelliJIdea2017.2\system\Tomcat\Tomcat_serviceにコピーします
これは、同じポート番号で実行されているアプリケーションがある場合に発生します。プロセスを強制的に強制終了することでこれを行う1つの方法。管理者としてコマンドプロンプトを開きます。コマンド「taskkill/IM "Java.exe"/F」を実行します。これはWindowsでうまくいきました。これが機能するかどうかを教えてください。
8081
)。lsof -t -i :8081
kill PROCESS_ID
私の場合、debugger portの変更に多くの時間を浪費しましたが、問題はなかったです。 TomcatはRun構成で選択したポートで実行できなかったため、サービスをデバッグできませんでした。