0

我正在使用带有 Maven 的 Eclipse Juno 并且有一个 JUnit 测试,它使用 Jemmy 启动另一个 Java 应用程序并通过事件队列对其运行自动化测试。由于被测试应用程序的限制,并且我们想要运行应用程序的多个实例,它必须在自己的进程中运行。

因此,我运行 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

我已经尝试了几十个端口,我知道这些端口没有被使用,并且 processbuilder 只是拒绝从打开的 JDWP 端口开始。所以我认为我在尝试如何做到这一点上有一个系统性的问题,但我在这方面的经验不是很丰富。我几乎完全按照远程调试指南进行操作,例如:

远程调试 Java 应用程序 http://javarevisited.blogspot.nl/2011/02/how-to-setup-remote-debugging-in.html

然而,地址已在使用中的错误仍然存​​在。有任何想法吗?

4

0 回答 0