java - JDI - IllegalConnectorArgumentsException : Argument invalid

标签 java eclipse jdi

我正在使用 JDI 调试另一个正在运行的 java 应用程序。

我所做的有效:

  1. 使用 Eclipse 运行两个应用程序。调试器使用以下 VM 选项启动:

    -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4000
    
  2. 另一个应用程序连接到端口 4000 处的套接字,并遵循正常过程(断点等)来获取局部变量的值。

  3. 工作正常并给我带来了值(value)。

我现在想做的事情:

我没有使用 Eclipse 启动两个进程,而是在 Eclipse 中启动一个进程,并且该 Process 使用 ProcessBuilder 使用以下参数启动另一个进程:

String[] args1 = {getJavaDir(),"-cp",classpath,"-Xdebug", "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4000", "processII.Main2"};
ProcessBuilder builder = new ProcessBuilder(args1);
builder.directory(directory);
Process process = builder.start();

进程成功启动。但是,当我尝试通过第一个进程访问它时,出现以下错误:

com.sun.jdi.connect.IllegalConnectorArgumentsException: Argument invalid

在网上查了一下,关于异常是什么的信息很少。

如果您能帮助我找出问题所在,我将不胜感激!

最佳答案

当调试 JVM 的连接器参数出现错误时,会抛出此异常。我认为您的调试参数必须一起放在同一个参数中,而不是两个单独的参数(将 -Xdebug-Xrunjdwp... 放在同一个参数上),尝试使用:

String[] args1 = {getJavaDir(),"-cp",classpath,"-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4000", "processII.Main2"};
ProcessBuilder builder = new ProcessBuilder(args1);
builder.directory(directory);
Process process = builder.start();

希望这有帮助,

关于java - JDI - IllegalConnectorArgumentsException : Argument invalid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24177068/

相关文章:

java - Hibernate - 如何检索已为 L2 缓存配置的所有实体类的列表

Java:调整图像大小不起作用

java - 使用 SourceViewer 的 Eclipse 4 RCP 编辑器撤消和重做操作不起作用

linux - 更改类路径以启动 vm

java - 在 Eclipse 中,有没有一种方法可以在不同的控制台窗口中运行多个 Java 应用程序?

Java/hibernate : how to write DAO code for complex SQLs

c++ - 在 Eclipse IDE C++ 中未在此范围内声明的变量

eclipse - 以编程方式使用 Eclipse 插件中的 CMD 或 Terminal

java - JDI:如何像在调试器中那样暂停 Java 应用程序 (JVM)

java - 在 Java 调试器接口(interface) (JDI) 中调用静态方法