私はEclipse Juno with Mavenを使用しており、Jemmyを使用して別のJavaアプリケーションを起動し、イベントキューを介して自動テストを実行するJUnitテストがあります。テスト対象のアプリケーションの制限により、アプリケーションの複数のインスタンスを実行したいので、独自のプロセスで実行する必要があります。
したがって、JUnit テストを実行するメイン クラスは、環境をセットアップし、ProcessBuilder を介してプロセスを作成し、そのプロセスを実行して、同じプロセス/jvm で Jemmy ワーカーとターゲット アプリケーションを生成します。
私の問題は、生成されたプロセスをデバッグしたいのですが、他のすべての Eclipse リモート デバッグ ガイドに従ってもデバッグできないようです。私のプロセスビルダーは次のようになります
ProcessBuilder builder = new ProcessBuilder(
javaBin,
"-Xmx512M",
"-Xdebug",
"-Xrunjdwp:transport=dt_socket,address=8002,server=y,suspend=y",
"-cp", classpath, "-Djava.library.path=./native", "-D"
+ PID_PROP + "=" + newPid, MyJemmyTestHarness.class
.getCanonicalName());
指定したポートに関係なく、同じエラーが発生します
ERROR: transport error 202: bind failed: Address already in use
私は何十ものポートを試しましたが、使用されていないことがわかっているポートは、JDWP ポートを開いた状態で開始することをプロセスビルダーが拒否するだけです。ですから、これをどのように行おうとしているのかについて体系的な問題があると思いますが、この分野の経験はあまりありません。私はリモートデバッグガイドをほぼ文字どおりにフォローしました。
Java アプリケーションのリモート デバッグ http://javarevisited.blogspot.nl/2011/02/how-to-setup-remote-debugging-in.html
それでも、Address Already in Use エラーは解決しません。何か案は?