web-dev-qa-db-ja.com

すでに使用されているアドレス:JVM_Bind java

Java St​​ruts MysqlおよびJboss 4.05バージョンで構築されたアプリケーションを再起動するたびに、アドレスはすでに使用中:JVM_Bind

私が知っている唯一の修正は、マシンを再起動して再試行することです、それは動作します。それ以外の場合は、Ctrl-Alt-Delを実行し、Javaに関連するすべてのプロセスを停止します。これも機能する場合があります。

しかし、正確な理由は何ですか、この問題をどのように防ぐことができますか?

47
gmhk

すでに使用されているアドレス:JVM_Bind

は、現在のアプリケーションがバインドしようとしているポートで他のアプリケーションがすでにリッスンしていることを意味します。

あなたがする必要があるのは、現在のアプリケーションのポートを変更するか、それ以上です。すでに実行中のアプリケーションを見つけて、それを強制終了します。

linuxでは、次を使用してアプリケーションpidを見つけることができます。

netstat -tulpn
45
phoenix24

Windowsでは、クリーンなシャットダウンなしでEclipseがクラッシュすると、このシナリオが発生し、ローカルのJettyまたはTomcatサーバーが稼働し続けます。 Eclipseを再度開いてサーバーを再起動しようとすると、「すでに使用されているアドレス:JVM_Bind」につながります。

これを解決するには、タスクマネージャーを開いてjavaw.exeプロセスを見つけて終了します。

その後、Eclipseでサーバーを再起動できます。

enter image description here

26
CodeQ

サーバー(私はJBossを使用)が既に使用されているポートで、私は通常これに遭遇します

ユージュアル・サスペクツ

  1. Apache Http Server => Windowsで作業している場合、サービスを停止します。
  2. IIS =>を使用してISSを停止します
  3. Skype =>はい、スカイプをポート80に接続しました

JBoss 4.2.xが自身をバインドするポートを変更するには、次の場所に移動します。

「C:\ jboss4.2.2\server\default\deploy\jboss-web.deployer\server.xml」

ここで、デフォルトはサーバーのインスタンスであり、ここでポートを変更します。

<Connector port = "8080" address = "$ {jboss.bind.address}">

上記の例では、ポートは8080にバインドされています

13

コマンドラインを開き、netstat -a -o -nまたはtasklistと入力して、現在実行中のプロセスを確認します。 Javaに関連するポートを見つけて、taskkill /F /PID <your PID number>と入力します。 Enterをクリックします。

6
Taras Melnyk

MySqlがJBossと同じポートでリッスンすることは可能ですか?

エラーメッセージで指定されたポート番号はありますかAddress already in use: JVM_Bind:8080など

JBoss server.xmlのポートを変更して、これをテストできます。

3
JoseK

..\Tomcat\conf\server.xmlのポート8080の二重定義が原因である可能性もあります。

<Connector port="8080"
           enableLookups="false" redirectPort="8443" debug="0"/>
<Connector port="8080"
           enableLookups="false" address="127.0.0.1" maxParameterCount="30000"/>
1
SzB

そのエラーは、別のServerSocketによって既に使用されているポートに新しいServerSocketを作成しようとしていることを意味します。そのため、アプリケーションですべてのソケットと接続を閉じ、アプリケーションが完全に終了するようにしてください。また、プログラムで起動した別のプロセスがあるかどうかも確認してください。

1

それを防ぐ方法に関する簡単な答えは、JBossを再起動する前に停止する必要がある可能性が高いということです。

コンソールビューの[終了]ボタンを呼び出して、サーバーをシャットダウンできるはずです。

1
Jarle Hansen

jVMバインディング例外の次のオプションを試してください。

  1. サーバーを起動および停止します。サーバーのプロセスIDを確認し、サーバーを強制終了して停止します。
  2. コントロールパネル->管理ツール->サービス->すべてのサーバーを確認し、すべてのサーバーを停止してから、独自のサーバーを起動します。
  3. 使用しているブラウザを変更します。たとえば、IEを使用している場合、Mozilla firefoxに変更します。
0
aarifmkhan

Team Serverの資格情報を削除してみてください。ほとんどの場合、サーバーの列にある種のポートが含まれています。 https://wathever.visualstudio.com:44

Windows/Preferencesに移動してTeamを展開し、Team Foundation ServerがCredentialsに移動して、そこにあるものを削除します。

0
user9203842

Windowsでも同じでした。私の解決策は、デバッグが接続するポートを取得することでした。 (IntelliJでは、「Tomcatの実行エラー:デバッガーポート(127.0.0.1:XXXXX)を開くことができません::既に使用中です...」という情報を提供する赤い四角形)XXXXXがポート番号であるとします。次に、cmdウィンドウで問題とPIDを検索しました:

netstat -ano | find "CLOSE_WAIT" | find ":XXXXX"

結果行の最後の番号としてPID番号を取得しました。 (YYYYとしましょう)最後に:

TASKKILL /PID YYYY

追加情報:Winscpがログアウトしましたが、おそらくそれが私の問題の原因でした。 :)

0
BlondCode

私もこの問題を抱えていました。私にとっては、OpenFireを開始/停止できませんでした(停止したと言いましたが、すべてがまだ実行されていました)

Sudo /etc/init.d/openfire stop
Sudo /etc/init.d/openfire start

また、Apacheを再起動しても解決しませんでした

Sudo /etc/init.d/Apache2 restart

エラーは内部にありました:

/opt/openfire/logs/stderror.log
Error creating server listener on port 5269: Address already in use
Error creating server listener on port 5222: Address already in use

これを修正する方法として、ホストの管理領域内でサーバーを実際にオフにする必要がありました。

0
busycoding

これは最近、Eclipse内で実行中の2つのTomcatサービスでJMXを有効にしたときに起こりました。誤って各サーバーに同じポートを配置しました。

各jmxリモートに異なるポートを指定するだけです

サーバー1

-Dcom.Sun.management.jmxremote.port=9000

サーバー2

-Dcom.Sun.management.jmxremote.port=9001
0
steve