Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ProcessBuilder调试_Java_Process_Runtime.exec_Processbuilder - Fatal编程技术网

Java ProcessBuilder调试

Java ProcessBuilder调试,java,process,runtime.exec,processbuilder,Java,Process,Runtime.exec,Processbuilder,我创建了一个可执行jar,并使用另一个java程序中的process builder执行它。这是我的密码- public class SomeClass { public static void main(String[] args) { Process p = null; ProcessBuilder pb = new ProcessBuilder("java", "-jar", "src.jar"); pb.directory(new File("/Users/viv

我创建了一个可执行jar,并使用另一个java程序中的process builder执行它。这是我的密码-

public class SomeClass {
public static void main(String[] args) {
    Process p = null;
    ProcessBuilder pb = new ProcessBuilder("java", "-jar", "src.jar");
    pb.directory(new File("/Users/vivek/servers/azkaban-0.10/TestApp/src"));
    try {
        p = pb.start();
    } catch(Exception ex) {
        ex.printStackTrace();
    }
}
}


我现在正试图从eclipse调试src.jar。在调试配置中,我将项目src作为外部项目提供,但它仍然没有达到我的任何断点。有没有一种方法可以为这样的东西设置调试环境?

Eclipse中调试jar包的方法:

在项目的引用库中选择jar。 在java源代码附件中,可以指定源代码的位置。 从项目中调用一些jar文件类。 添加断点并调试项目。 在本例中,jar文件和项目在同一进程中运行

但是当您运行jar文件时
ProcessBuilder,jar文件在另一个独立于您的项目的进程中运行,当然独立于eclipse,即jar文件以您在命令行中输入“java-jar-jarfile”的方式运行

好的,所以我设法让它工作了。不幸的是,我找不到用于此的示例项目,因此我将尽可能地解释。 从上面提到的这条线——

ProcessBuilder pb = new ProcessBuilder("java", "-jar", "src.jar");
我所需要做的就是将Xdebug作为一个参数添加到这个函数中-

ProcessBuilder pb = new ProcessBuilder("java", "-jar", "-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005", "src.jar");

然后,我在eclipse中创建了一个调试环境,将端口设置为5005,并在jar的源代码中设置了几个断点,它成功了

让我看看我是否正确理解了您的意思——您是从Eclipse内部调用上面的SomeClass代码,并希望调试jar文件中的Java源代码,该jar文件在Eclipse外部由OS提供的单独JVM中调用?我看你的结局不太好。我认为您最好将日志代码添加到src持有的Java代码中。我很抱歉这么晚才回复!我设法解决了这个问题。创建新的ProcessBuilder时,我只需将Xdebug选项添加到命令中,并指定要连接的端口。然后在eclipse中创建一个调试配置并连接到该端口进行调试。同样,我认为他的最佳选择是忘记以这种方式进行调试,而是通过日志记录获取程序状态。