将cmd输出写入文件在Tomcat中不起作用:(

问题描述 投票:0回答:1

我正在使用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中时,它不起作用。可能是什么问题?

如何解决?

java eclipse tomcat process
1个回答
0
投票

我怀疑问题可能出在CD指令上:

  • 检查LOGSTASH_PATH环境变量在Tomcat进程中是否可用。
  • 如果当前的Tomcat目录和LOGSTASH_PATH属于不同的驱动器,请添加/d限定符:

    “ cd / d” + System.getenv(“ LOGSTASH_PATH”)+ ...

(如通过@nitind指出的那样,用Java调用cd代替directory(File)更好,这要好得多。

© www.soinside.com 2019 - 2024. All rights reserved.