Java ProcessBuilder调试
我创建了一个可执行jar,并使用另一个java程序中的process builder执行它。这是我的密码-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
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中创建一个调试配置并连接到该端口进行调试。同样,我认为他的最佳选择是忘记以这种方式进行调试,而是通过日志记录获取程序状态。