java - Runtime.getRuntime().exec(command) 创建的进程在执行过程中处于休眠状态
问题描述
File jarFile = new File(jarLocation + "/myJar.jar");
if ((jarFile).exists()) {
String[] command = new String[10];
command[0] = "java";
command[1] = "-jar";
command[2] = jarFile + "";
command[3] = Data.getParam1() + "";
command[4] = Data.getParam2() + "";
command[5] = Data.getParam3();
command[6] = Data.getParam4() + "";
command[7] = Data.getParam5() + "";
command[8] = "2";
command[9] = Data.getParam6() + "";
Process p1 = Runtime.getRuntime().exec(command);
}
当我在终端上执行我的 jar 时,它工作正常。但是,当我尝试使用上面的代码执行同一个 jar 时,执行此 jar 的进程进入睡眠状态而没有完成其执行。因此,请建议我如何一次性完成 jar 的执行。
解决方案
在 java 中,创建的子进程使用父进程的控制台。阻塞可能是因为未能读取输入流或写入输出。也许当直接从终端运行 jar 时,它的工作原理是控制台可能已分配给进程(尽管不要引用我的话)。
检查:https ://docs.oracle.com/javase/7/docs/api/java/lang/Process.html
推荐阅读
- c# - Directory.EnumerateFiles 搜索模式不适用于文件共享
- java - 如何让我的对角线从我的星号框的左下方开始打印?
- javascript - 谷歌电子表格脚本停止并给出“超出执行时间”
- parsing - 为什么我不能在返回位置使用大括号式宏表达式的方法?
- python - 使用 SSIS 执行进程任务运行导入熊猫的 Python 脚本时出现问题
- c# - 我需要帮助修复我的密门密码
- aws-lambda - 在 lambda nodejs init 期间调用异步函数是否安全?
- regex - 多行正则表达式的制定
- amazon-web-services - 如何将域名添加到我的 terraform 配置中
- php - PHP在txt文件中搜索一个单词并回显整行