Eclipseを介してTomcatアプリケーションをデバッグできないようです。設定しました
CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
bin/catalina.sh
を実行すると、dt_socket
でport 8000
をリッスンしているという出力が表示されます。しかし、Eclipseでポート8000
に接続しようとすると(リモートJavaアプリケーションメニューにエントリを追加することにより)、接続の拒否について不平を言います。何か案は?
これが機能するかどうか確認できますか?
JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"
catalina.sh jpda start
適切な情報を取得するためにこれに時間を費やしました。
そこで、詳細な情報をステップごとに示します。
環境:Windows 7
Tomcatバージョン:7.0
IDE:Eclipse
Tomcatでリモートデバッグを有効にするために追加する構成は次のとおりです。
-Xdebug
-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n
上記の非Windows環境の構成はお勧めしません。上記の構成を追加するには、サーバービューで使用できるTomcatサーバーをダブルクリックします。以下のスクリーンショットを見つけます。
次に、上記のランタイム環境設定をTomcatに追加します。スクリーンショットの下のこのチェックについて。
以下のスクリーンショットに示すように、起動構成プロパティの編集の「Arugments」タブに移動しました。
GoTo VM argumentsセクションはこれらの行を追加します。
-Xdebug
-agentlib:jdwp = transport = dt_socket、address = 8000、server = y、suspend = n
これで、Eclipseツールバーでデバッグボタンが使用可能になりました。
デバッグ構成で「Remote Java Application」を見つけてダブルクリックします。
[名前]フィールドに、好きな名前を入力します。
[参照]ボタンを使用してプロジェクトフィールドから、リモートデバッグを実行するプロジェクトを選択します。
ホスト名はホストアドレスに他なりません。ここで私はローカルで作業しているので「localhost」です。
[ポート]列の最後の値は8000である必要があります。[名前]および[プロジェクト]テキストフィールドを除き、他の2つの列のホストとポートはEclipseと同じ値になります。スクリーンショットで情報を確認してください。
サーバーコンソールでTomcatServerを右クリックし、コンテキストメニューから[追加と削除]を選択します。このダイアログから、プロジェクトをサーバーに追加できます。
次に、Tomcatサーバーを実行します。
次に、Debug ToolからTomCatDebugConfigurationを実行します。
最後に内部または外部のブラウザーを開いて、プロジェクトを実行します。実行制御がブレークポイントに達すると、Eclipseはデバッグの観点を要求します。
catalina.bat
または.sh
が見つかったTomcat binディレクトリ(別名{CATALINA_BASE}/bin)で、編集(ない場合は作成):
setenv.bat/.sh
次の行を追加します。
CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
必要な作業はこれだけです。catalina.bat
(または.sh
)ファイルを編集する必要はありません。
catalina.bat
またはcatalina.sh
のコメントを参照してください。
特定の環境/状況に合わせて構文を調整する必要がある場合があります。たとえば、既にCATALINA_OPTSが定義されている場合、次のようなことを実行できます(Windows環境で)。
set CATALINA_OPTS=%CATALINA_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,address=8088,server=y,suspend=n
Eclipseからデバッグするには:
実行->デバッグ構成...->リモートJavaアプリケーション->新規
そして、名前、デバッグするプロジェクト、および上記で指定したTomcatホストとデバッグポートを指定します。
catalina.bat
ファイルで、以下を変更してください。
ステップ1:CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
ステップ2:JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"
ステップ3:次のようなコマンドプロンプトからTomcatを実行します。catalina.sh jpda start
ステップ4:次に、Eclipseでデバッグ構成を作成します
project name
を指定します。Standard(Socket Attach)
として指定しますlocalhost
としてホスト8000
(または任意のポート番号としてポート。ただし、他の場所でも同じである必要があります)。Tomcat(Windows)でTomcat7のリモートデバッグモードを有効にする簡単な方法を共有しましょう。
ステップ1:bin/startup.batファイルを開く
ステップ2:JDPAオプションを使用してデバッグ用に以下の行を追加します(ファイルの行を開始する必要があります)
set JPDA_ADDRESS=8000
set JPDA_TRANSPORT=dt_socket
ステップ3:同じファイルで..ファイルの最後に移動して、この行を変更します-
call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%
instead of line
call "%EXECUTABLE%" start %CMD_LINE_ARGS%
ステップ4:bin> startup.batを実行するだけです(したがって、Tomcatサーバーはポート8000でリモートモードで実行されました)。
ステップ5:その後、ソースプロジェクトをEclipse IDEでリモートクライアントに接続します。
ステップ6:Eclipse IDEで、「デバッグ構成」に進みます
step7:「remote Java application」をクリックし、その上で「New」をクリックします
ステップ8。 「接続」タブでパラメータ値を設定します
project= your source project
connection Type: standard (socket attached)
Host: localhost
port:8000
ステップ9:[適用してデバッグ]をクリックします。
最終的に、Eclipseリモートクライアントは実行中のTomcatサーバーに接続されます(デバッグモード)。
このアプローチがあなたの助けになることを願っています。
よろしく..
追加するcatalina.batの変更
set JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"
そして
CATALINA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
オプション:startup.batの実行時にデフォルトでデバッグモードを実行するには、以下の行を追加します
call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%
EclipseまたはSTSでデバッグ構成を選択し、右クリック->新規
connection type -> Standard socket Attach
Port -> 8000 (as given in the CATALINA_OPTS)
Host -> localhost or IP address
./catalina.sh jpda start
(フォーク)または./catalina.sh jpda run
(フォークしない、ヘルプに記載されていない)を実行するだけです。ここで説明するすべてのオプションは、デフォルトで正しい値になります。
それでも上記のすべてが機能しない場合は、いつでもスクリプトに追加できます
set "Java_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
Tomcat 7では、catalina.shに次のコードがあります。
if [ "$1" = "jpda" ] ; then
if [ -z "$JPDA_TRANSPORT" ]; then
JPDA_TRANSPORT="dt_socket"
fi
if [ -z "$JPDA_ADDRESS" ]; then
JPDA_ADDRESS="8000"
fi
if [ -z "$JPDA_SUSPEND" ]; then
JPDA_SUSPEND="n"
fi
if [ -z "$JPDA_OPTS" ]; then
JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
fi
CATALINA_OPTS="$CATALINA_OPTS $JPDA_OPTS"
shift
fi
Iiは、次のものでJPDAをセットアップできることを意味します。
export JPDA_TRANSPORT=dt_socket
export JPDA_ADDRESS=8000
export JPDA_SUSPEND=n
または:
JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"
そして最後に使用します:
catalina.sh jpda start
よろしく
Dockerコンテナ内でTomcatを実行しているときにこの問題にぶつかりました。これを修正するには、docker runコマンドに '-p 8000:8000'引数を追加して、このポートをローカルマシンに公開するようにしてください。もちろん、コンテナ内の$ {CATALINA_HOME}/bin /にもsetenv.shファイルが必要です。
上記の回答の多くは正しいですが、デフォルトではデバッガーはローカルホストのみでリッスンすることを覚えておいてください。 リモートサーバーをデバッグしている場合、リッスンするIPアドレスを指定する必要があります。たとえば、
JPDA_OPTS = "-agentlib:jdwp = transport = dt_socket、address = 10.1.1.:8000、server = y、suspend = n"
catalina.sh jpda start
アドレスは現在10.1.1.:8000であることに注意してください
もちろん、次のコマンドを実行して、実際に使用されているIPを確認することもできます。
netstat -an
windowsとLinuxの両方で、find(Win)またはgrep(Linux)でポートを除外します。
まず、catalina.batをテキストエディターで開くと、「このスクリプトで変数を設定しないでください.....」と表示されます。そのため、そのスクリプトで変数を変更しないでください。代わりに以下の手順を実行できます。
次に、そのbatファイルに次のような2つの変数を設定します。
set CATALINA_OPTS = "-Xdebug -Xrunjdwp:transport = dt_socket、address = 8000、server = y、suspend = n"
jPDA_OPTS = "-agentlib:jdwp = transport = dt_socket、address = 8000、server = y、suspend = n"を設定します
最後に、cmdで「catalina.bat jpda start」を実行します
IDEで、リモートデバッグ構成を作成し、ホストを関連サーバーのIPおよびポートに8000に設定します。
Startup.batをCATALINA_OPTSおよびJPDA_OPTSで変更しても機能しませんでしたが、catalina.batに追加すると機能しました
CATALINA_OPTS = "-Xdebug -Xrunjdwp:transport = dt_socket、address = 8000、server = y、suspend = n"
JPDA_OPTS = "-agentlib:jdwp = transport = dt_socket、address = 8000、server = y、suspend = n"
呼び出し「%EXECUTABLE%」の開始を変更%CMD_LINE_ARGS%に
「%EXECUTABLE%」を呼び出すjpda start%CMD_LINE_ARGS%
次に、Eclipseのデバッグ構成でリモートJavaアプリケーションを構成します。
Apache-Tomcat-8.5.28バージョンの場合、これを行うだけで、
catalina.bat jpda start
デフォルト設定として、catalina.batで既に構成されています
"%JPDA_OPTS%" == ""でない場合goto gotJpdaOpts set JPDA_OPTS = -agentlib:jdwp = transport =%JPDA_TRANSPORT%、address =%JPDA_ADDRESS%、server = y、suspend =%JPDA_SUSPEND%
したがって、他の設定は必要ありません。コマンドcatalina.bat jpda startを実行すると、デバッグポート8000が開いていることがわかります。
Java 8およびTomcat 9で発生した問題については、この回答を参照してください。 Tomcat 9ではJavaリモートデバッグ(JPDA)が機能しません
これは@DABの警告に似ており、彼のソリューションはおそらくより安全です。