gpt4 book ai didi

java - 如何使用 ProcessBuilder 在 Java 代码中运行 NPM 命令

转载 作者:行者123 更新时间:2023-12-01 14:21:17 27 4
gpt4 key购买 nike

我的环境是mac。我正在尝试从我的 Java 代码运行“npm ls”,但它会抛出错误消息。

我的java代码:

String npm = isWindows() ? "npm.cmd" : "npm";

System.out.println(rootStr);
Process process = new ProcessBuilder(npm, "ls").directory(new File(rootStr)).start();

错误信息:

Users/youngeun/Downloads/zenbot_unstable
java.io.IOException: Cannot run program "npm" (in directory "/Users/youngeun/Downloads/zenbot_unstable"): error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at com.iotcube.scanner.nodejs.npm.NpmService.npmInfo(NpmService.java:26)
at com.iotcube.scanner.IotcubescannerApplication.main(IotcubescannerApplication.java:174)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
at java.lang.ProcessImpl.start(ProcessImpl.java:134)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 2 more

但它似乎在我的终端中完美运行:

| ~/Downloads/zenbot_unstable @ Youngeunui-MacBook-Pro (youngeun) 
| => npm ls
zenbot4@4.1.0 /Users/youngeun/Downloads/zenbot_unstable
├─┬ @babel/core@7.2.2
│ ├─┬ @babel/code-frame@7.0.0
│ │ └─┬ @babel/highlight@7.0.0
│ │ ├── chalk@2.4.2 deduped
│ │ ├── esutils@2.0.2 deduped
│ │ └── js-tokens@4.0.0
│ ├─┬ @babel/generator@7.3.0
│ │ ├── @babel/types@7.3.0 deduped
│ │ ├── jsesc@2.5.2
│ │ ├── lodash@4.17.11 deduped
...

我已经尝试过其他 stackoverflow 页面的解决方案,但它们似乎都不起作用...我很迷茫..我会很感激你的帮助。谢谢

最佳答案

尝试提供 npm 可执行文件的完整路径:

String dir = "/Users/youngeun/Downloads/zenbot_unstable";
String npm = dir + "/npm";
Process p = new ProcessBuilder(npm, "ls")
.director(new File(dir))
.start();
p.waitFor();

关于java - 如何使用 ProcessBuilder 在 Java 代码中运行 NPM 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56019990/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com