Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java运行nodejs_Java_Node.js - Fatal编程技术网

使用java运行nodejs

使用java运行nodejs,java,node.js,Java,Node.js,我需要使用java运行一些node.js程序 我的代码如下所示 String filePath= "/home/gilles/eclipse-workspace/informationGewinnungApp/videotool/src/videotool.js"; String option1 = "-m resources/WetterBerich"; String option2 = "--bg_content resources/logo.png"; Proce

我需要使用java运行一些node.js程序

我的代码如下所示

String filePath= "/home/gilles/eclipse-workspace/informationGewinnungApp/videotool/src/videotool.js";
    String option1 = "-m resources/WetterBerich";
    String option2 = "--bg_content resources/logo.png";

    ProcessBuilder Pb =
               new ProcessBuilder("node",filePath+option1+option2);
             Map<String, String> env = pb.environment();
             env.put("VAR1", "myValue");
             env.remove("OTHERVAR");
             env.put("VAR2", env.get("VAR1") + "suffix");
             pb.directory(new File("/usr/bin"));
             File log = new File("log");
            // pb.redirectErrorStream(true);
             pb.redirectError(ProcessBuilder.Redirect.INHERIT);
             pb.redirectOutput(Redirect.appendTo(log));
             Process p = pb.start();
             assert pb.redirectInput() == Redirect.PIPE;
             assert pb.redirectOutput().file() == log;
             assert p.getInputStream().read() == -1;
主要是欺骗:

您在一个参数中放置了多个(全部)选项。

当您将命令行
节点this
传递给shell时,它将
this
this
作为单独的参数传递给节点,这就是node希望接收它们的方式
ProcessBuilder
不像shell那样将字符串拆分为单独的参数,您必须这样做:

ProcessBuilder Pb = new ProcessBuilder("node",filePath, 
  "-m", "resources/WetterBerich",
  "--bg_content", "resources/logo.png");
PS:对工作目录使用
/usr/bin
通常不是一个好主意

ProcessBuilder Pb = new ProcessBuilder("node",filePath, 
  "-m", "resources/WetterBerich",
  "--bg_content", "resources/logo.png");