JsiiEngine createNewObject调用ProcessBuilder启动时抛异常,如何解决?
解决JsiiEngine调用ProcessBuilder.start时抛出的"node: No such file or directory"异常
这个异常的核心原因是Java进程找不到Node.js可执行文件——Jsii运行时依赖Node.js执行JavaScript代码,调用createNewObject时会启动Node进程,但系统环境变量里没有配置Node的路径,或者Java进程无法读取到该路径。
以下是具体解决步骤:
- 安装Node.js:如果系统还没安装Node.js,先安装官方LTS版本,确保安装完成后在终端执行
node -v能正常输出版本号。 - 检查并配置PATH环境变量:
- 终端执行
node -v报错的话,把Node.js的安装目录(比如Windows下的C:\Program Files\nodejs,Linux/macOS下的/usr/local/bin)添加到系统PATH环境变量中。 - 如果是在IDE中运行项目,需要重启IDE让新的环境变量生效,也可以直接在IDE的运行配置里手动添加PATH变量。
- 终端执行
- 手动指定Node路径:如果PATH无法修改,或者Java进程读不到PATH,可以通过JVM参数或代码手动指定Node的绝对路径:
- 启动Java程序时添加JVM参数:
-Djsii.node=/绝对路径/node - 或者在代码初始化阶段设置:
System.setProperty("jsii.node", "/绝对路径/node");
- 启动Java程序时添加JVM参数:
- 验证修复:重启应用后重新触发相关操作,确认异常是否消失。
内容的提问来源于stack exchange,提问作者Kannan J
相关产品推荐
相关产品推荐

