【发布时间】:2019-12-23 11:01:32
【问题描述】:
我正在使用 java 进程打开 cmd 来运行命令,然后将输出保存到文本文件中。
ArrayList<String> commands = new ArrayList<>();
commands.add("cmd.exe");
commands.add("/c");
commands.add("cd "+System.getenv("LOGSTASH_PATH")+" && start /B cmd.exe /c \"logstash --config.test_and_exit -f "+configFileName+"\""+" > testing.txt");
ProcessBuilder builder = new ProcessBuilder(commands);
Process subProcess = builder.start();
Thread.sleep(50000);
subProcess.destroy();
当我用 eclipse 尝试这个代码时,这段代码可以工作,但是当我从中生成一个战争并部署在 tomcat 中时,它就不起作用了。可能是什么问题?
如何解决?
【问题讨论】:
-
“它不起作用”是什么意思?你有什么错误吗?还是输出不符合您的预期?
-
没有错误。它不写入文件
-
可能会尝试放置一些日志语句并尝试找出它失败的确切行
-
不会在任何线路上崩溃。只是不写入文件
-
&&是 shell 用来连接两个进程的东西。您不能将其用作命令的一部分。改为在您的ProcessBuilder实例上调用directory()。
标签: java eclipse tomcat process