我有一个java项目,我想从另一个java程序运行。但是当我使用exec命令调用它时,它不会立即执行,而是等待当前程序结束。如果我添加一个waitFor语句,那么当主程序等待进程并且进程正在等待主程序时,程序挂起。有谁知道我怎么解决这个问题?或者为什么它以这种方式表现?我需要在第二个jar文件执行之前执行这个jar文件。
Runtime.getRuntime().exec("java -jar \"JavaProject1/dist/JavaProject1.jar\"");
System.out.println("Hello");
p.waitFor();
jar文件的位置很好,它会打印你好。我想要运行的jar文件的主要类是在DaniWeb
的这个帖子中答案 0 :(得分:1)
除此之外,你必须继续读取进程STDOUT和STDERR,否则它将阻塞。
例如,请参阅http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html
答案 1 :(得分:0)
为什么它以这种方式表现?
因为您在自己的程序中创建了死锁。
当您添加waitFor()
程序 main()时,请等待外部进程完成。
当外部进程正常完成时,它返回零。
可能是外部程序有一些问题