java - 从java应用程序执行node.js脚本时出现问题

标签 java node.js

当我尝试从 java 类执行 node.js 脚本时,出现以下错误: java.io.IOException:无法运行程序“node events.js”:错误=2,没有这样的文件或目录

这是我的代码,有人可以告诉我我在这里缺少什么吗?

public class NodeInitializer {
    private static final Logger logger = Logger.getLogger(SpringLauncher.class);    
    private Process nodeProcess;
    ProcessBuilder processBuilder;

    public void start(){
        try {
            processBuilder = new ProcessBuilder("node events.js");
            nodeProcess = processBuilder.start();
        } catch (IOException e) {
            logger.error(e.getCause(), e);
        }
    }
}

最佳答案

使用

List<String> commands = new LinkedList<String>();
commands.add("node");
commands.add("event.js");

ProcessBuilder processBuilder = new ProcessBuilder(commands);
processBuilder.start();

javadoc for ProcessBuilder

a command, a list of strings which signifies the external program file to be invoked and its arguments, if any. Which string lists represent a valid operating system command is system-dependent. For example, it is common for each conceptual argument to be an element in this list, but there are operating systems where programs are expected to tokenize command line strings themselves - on such a system a Java implementation might require commands to contain exactly two elements.

根据我的经验,大多数操作系统要求您对要执行的命令中的元素进行标记,因此 [node](命令/程序)[events.js](参数) 为列表中的两个元素。

你正在得到

 java.io.IOException: Cannot run program "node events.js": error=2, No such file or directory

因为 java 通过操作系统尝试将“node events.js”作为程序执行,而不是作为程序及其参数执行。

关于java - 从java应用程序执行node.js脚本时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16699888/

相关文章:

javascript - 带 Electron 的 ElasticSearch JS

node.js - 如何将我的 node.js 客户端连接限制为 2?

javascript - 在 Javascript 中根据用户对对象进行分组

java - 我想挑选一个从方法扫描的值并获得该方法的 3 个实例的总和

java - 基于条件的依赖注入(inject)

java - 如何在Java中对包含多个句点/点的字符串进行排序?

java - ConcurrentHashMap compute() 方法线程安全吗?

java - 使用 Java 处理 REST Web 服务中的错误

javascript - 明显多余的 "unhandledRejection"事件被触发

javascript - 如何对路由发出 get 请求并从 API 检索信息?