234

Eclipse では、次のエラーが発生しました。

run:
     [java] Error creating the server socket.
     [java] Oct 04, 2012 5:31:38 PM cascadas.ace.AceFactory bootstrap
     [java] SEVERE: Failed to create world : java.net.BindException: Address already in use: JVM_Bind
     [java] Java Result: -1
BUILD SUCCESSFUL
Total time: 10 seconds

なぜ今起きたのかはわかりませんが、ほんの数時間前は問題なく動作していました。マシンを再起動する必要がありますか? どうすればその底にたどり着くことができますか?ヒントやアドバイスをいただければ幸いです。

4

21 に答える 21

229

プロセスが実行されているポートがわかっている場合は、次のように入力できます lsof -i:<port>

たとえば、lsof -i:8080ポート 8080 で実行されているプロセス (pid) を一覧表示します。

次に、プロセスを強制終了しますkill <pid>

于 2012-10-04T23:20:52.380 に答える
164

はい、同じポートに別のプロセスがバインドされています。

Windows SysinternalsのTCPView (Windows のみ) は、JVM_BIND エラーが発生したときのお気に入りのアプリです。どのプロセスがどのポートでリッスンしているかを示します。また、プロセスを強制終了したり、邪魔になっている接続を閉じたりするための便利なコンテキスト メニューも提供します。

于 2012-10-05T00:13:10.833 に答える
135

Windows で

netstat -ano

すべてのプロトコル、ポート、およびリッスンしているプロセスが一覧表示されます。使用する

taskkill -pid "proces to kill" /f

ポートをリッスンしているプロセスを強制終了します。例えば

 taskkill -pid 431 /f
于 2014-10-01T18:00:05.307 に答える
39

Macの場合:

プロセス ターミナルを強制終了します。kill <pid>

pidを検索: ターミナル:lsof -i:<port>

ディエゴピノからの回答

于 2013-03-01T08:46:42.620 に答える
17

Windows の場合:

  1. プロセスIDを見つける

    netstat -nao | 「8080」を見つける

プロセスIDが数字で表示されます。

TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING       18856

ここで18856はプロセス ID です

  1. そのプロセスを殺す

    タスクキル /PID 18856 /F

出力: 成功: PID 18856 のプロセスが終了しました。

ここで taskkill を使用して、プロセス ID:18856 を強制終了しています。

Linux/Mac の場合:

sudo kill -9 $(sudo lsof -t -i:8080)

ここでは、ポート8080を使用してプロセスを見つけ、sudo lsof -t -i:8080sudo kill コマンドでプロセスを強制終了します。

于 2020-04-29T08:06:18.567 に答える
9

同じポートで別のプロセスを実行しています。

タスク マネージャーで実行されている java.exe サービスの 1 つを強制終了してみてください。Eclipse も java.exe としてリストされているため、Eclipse を強制終了しないようにしてください。他に何も機能しない場合は、マシンを再起動すると問題が解決します。以前のテストでソケットをシャットダウンしていないようです。お役に立てれば。

于 2012-10-04T23:11:05.437 に答える
5

Windows CMD 行で、次のコマンドを入力して、バインド ポートで接続を保持しているプロセス ID を見つけます。

C:> netstat -a -o

-a すべての接続を表示

-o プロセス識別子を表示

そして、プロセスを終了します。

于 2015-08-17T08:15:00.493 に答える
5

Linux ユーザーの場合は、ポートを閉じてから次のように入力する必要があります。

fuser -k 8080/tcp
于 2018-11-01T06:43:42.960 に答える
2

@Diego Pinoが、UNIXでlsofを使用してプロセスを見つけ、それぞれのプロセスを強制終了できると述べたように、ポートはすでに他のプロセスで使用されています。Windowsの場合は、netstat -anoを使用してプロセスのすべてのpidを取得し、誰もが取得するポート。目的のポートを検索して強制終了します。

可能であれば、非常に簡単にマシンを再起動するだけです:)

于 2012-10-05T00:08:37.253 に答える
0

最初にサーバー プログラムを起動し、次にクライアント プログラムを起動したときに 2 つのコンソールが開かれたときに、Eclipse で同様の問題に直面しました。以前は、サーバーが閉じられたと考えて単一のコンソールでプログラムを停止していましたが、サーバーではなくクライアントを閉じただけでした。タスク マネージャーで実行中の Java プロセスを見つけました。この問題は、サーバー プログラムとクライアント プログラムの両方をそれぞれのコンソールから閉じることで解決されました (Eclipse は、最新のアクティブなプログラムのコンソールを表示します)。そのため、サーバー プログラムを再度開始すると、ポートが再び開かれてキャプチャされました。

于 2016-07-18T10:17:44.137 に答える