web-dev-qa-db-ja.com

Maven Eclipseデバッグ「JDWPトランスポートdt_socketの初期化に失敗しました、TRANSPORT_INIT(510)」

EclipseでMavenテストをデバッグしようとしています。 mavenオプションmaven.surefire.debugを使用してテストを起動すると、次のエラーが表示されます。

ERROR: transport error 202: bind failed: Address already in use
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:690]
/bin/sh: line 1: 27500 Abort trap        

シェルでtu launch debugを試したときも同じです。

私はmavenオプションforkMode = neverを追加しようとしましたが、maven.surefire.debugオプションなしでは持っていない溶接アーチファクトで別のエラーが発生します。

Error loading Weld bootstrap, check that Weld is on the classpath

ただし、Weldはクラスパス上にあります。

何か案は ?

31
Rémi Doolaeghe

ポートでリッスンしているプロセスを強制終了するには:

このコマンドは、すべてのポートでリッスンしているプロセスをリストする必要があります。

netstat -ano

-oオプションはプロセスIDを表示します。

* nixシステムを使用している場合は、次の方法でさらに改良できます。

netstat -ano | grep <badport> 

プロセスIDを取得したら、次の方法で終了できます。

Windows:

  • タスクマネージャーを開き、[表示]> [列の選択]> [PID]でPID列を追加します。
  • プロセスを見つけて右クリックして強制終了します

その他:

kill <PID>
27
lucrussell

Debug configuration-> Remote Java Application-> Connectタブに移動し、Allow termination of remote JVMを確認します。

次に、サーバー/ Mavenを再起動するときに、Debug perspectiveに移動し、read / stopボタンをクリックします。

5
Jasonw

通常問題は、別のプロセスがMavenデバッグポート5005を開いたままにすることです。私のMacでは、次のコマンドを実行して、どのポートがこのポートを開いたままにしているかを確認しました。

lsof -i tcp:5005

出力は次のとおりです。

COMMAND  PID        USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
Java    9089 my_user    7u  IPv4 0xe88ec542fd4cffc9      0t0  TCP *:avt-profile-2 (LISTEN)

そして、私はプロセスを殺しました:

kill -9 9089

これら2つのプロセスを一緒に実行できるようにするには、少なくとも1つのプロセスのMavenデバッグポートを変更する必要があります。参照: http://maven.Apache.org/surefire/maven-surefire-plugin/examples/debugging.html .

4
ofirbt

質問は長い間聞かれましたが、最近同じ問題がありました。

  1. タスクマネージャーを開く

  2. すべての「Java.exe」プロセスを強制終了します

  3. Mvnデバッグを再起動します

それが役立つことを願っています

4
moa

ドキュメントのためだけに、ローカルで実行しているのとまったく同じエラーが発生しました。

エラー:トランスポートエラー202:バインドに失敗しました:ネイティブメソッドでアドレスがすでに使用されています致命的なエラー:JDWP初期化されたトランスポートがありません、jvmtiError = AGENT_ERROR_TRANSPORT_INIT(197)エラー:JDWPトランスポートdt_socketが初期化に失敗しました、TRANSPORT_INIT(510)

私の場合、ポートは問題ではなく、ホストファイルでした。解決策は、追加/再追加/コメント解除することです。

127.0.0.1 localhost

構成ファイルはlocalhostをデフォルトとして設定するため、ソリューションはそのホストを追加するか、カスタムホストに変更します。

1
davidrl1000

私の解決策は、プロジェクトのブレークポイントを削除することでした!多くのブランチがあり、最近変更された場合、Eclipseはいくつかのブレークポイントを失います。

付け加えると、先週、Eclipseを使用したデバッグが不可能になったときに、同様の問題がありました。

FATAL ERROR in native method: JDWP No transports initialized,
jvmtiError=AGENT_ERROR_TRANSPORT_LOAD(196)
ERROR: transport library not found: dt_socket
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_LOAD(509)
JDWP exit error AGENT_ERROR_TRANSPORT_LOAD(196): No transports initialized [../../../src/share/back/debugInit.c:690]

残念ながら、おそらくオンラインで見つけることができる解決策は役に立ちました。

問題は、ファイアウォールが何らかの形でJRE binのすべてのdllを削除したことであることが判明しました(したがって、dt_socket.dllは完全に欠落しました)。

JRE全体の再インストールが役立ちました。

0
kks