Intellijを使用して、Tomcatアプリケーションをデプロイしようとしていますが、実行しようとすると、次のエラーが表示されます。
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
今、私は手動でそのポートで起こっているプロセスを探しました:
lsof -i:1098
そして、私はJavaプロセスを見つけて、それを殺しました:
ps aux | grep Java
kill -9 20386
それでうまくいきましたが、Intellijを開くたびにこれを行う必要があります。 Intellijを終了せずにサーバーを再実行する場合、このエラーが発生するため、実行できません。誰もが毎回手動でそれを殺すだけでなく、これに対する永続的な修正を知っていますか?
これは、Tomcatインスタンスを監視するJMXによるものです。 Tomcatはポート9999で実行されるため、JMXがシャットダウンの確認を開始する場合、このポートにバインドできません。
これを修正する1つの方法は、CATALINA_OPTS環境変数を定義することです。
Java_OPTSでこれらのプロパティを設定すると、Tomcatの起動時およびTomcatのシャットダウン時にjmxサーバーの起動が試行されます。したがって、ポートはすでに使用中の例外です。これらのプロパティは、Java_OPTSではなくCATALINA_OPTSに設定する必要があります。これは、Tomcatの起動時にのみ実行されます。
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 "
私にとってそれを修正するものは$ HOME/.bashrcにあります私はこのエクスポートを追加します:
export CATALINA_OPTS="$CATALINA_OPTS -Dcom.Sun.management.jmxremote -Dcom.Sun.management.jmxremote.port=8999"
サーバーを停止した後にスカルアイコンをクリックして、関連するすべてのプロセスを強制終了します。これは、ポートの問題の解決に役立つはずです。
この質問はTomcatで何度も見つけました。
例:代理抛出异常:Java.rmi.server.ExportException:すでに使用されているポート:912 3;ネストされた例外:Java.net.BindException:Address already in use
Tomcat [cc @ Cdf bin] $ vim catalina.shで、9123を8998などの非アクティブな番号に変更します。 [cc @ Cdf bin] $ ./start.sh;tailf ../logs/catalina.out