我正在使用带有Maven的Eclipse Juno并进行JUnit测试,该测试使用Jemmy启动另一个Java应用程序并通过事件队列对其进行自动测试。由于正在测试的应用程序的局限性,并且我们希望运行应用程序的多个实例,因此必须在其自己的进程中运行。
所以主要的类我运行我的JUnit测试来设置环境,然后通过ProcessBuilder创建一个进程,并执行该过程以产生一个Jemmy worker&目标应用程序在同一进程中/ jvm。
我的问题是我想调试生成的进程,而且我似乎无法在所有其他Eclipse远程调试指南之后执行此操作。我的processbuilder看起来像这样
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端口打开。所以我认为我有一个系统性的问题,我试图这样做,但我在这方面不是很有经验。我已经按照远程调试指南几乎到了这样的字母:
Remote debugging a Java application http://javarevisited.blogspot.nl/2011/02/how-to-setup-remote-debugging-in.html
然而,已使用的地址错误仍然存在。有什么想法吗?