【发布时间】:2019-07-11 13:22:42
【问题描述】:
java.io.IOException: Cannot run program "yarn": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at java.lang.Runtime.exec(Runtime.java:620)
at java.lang.Runtime.exec(Runtime.java:450)
at java.lang.Runtime.exec(Runtime.java:347)
at com.Main.main(Main.java:32)
您好,我在使用 Java 执行命令时遇到了一个奇怪的问题。我用下面的代码运行了一个命令,如果我运行mkdir testFolder,程序运行成功,但是如果我改了yarn -v这样的命令
然后发生错误。
try {
Process process = Runtime.getRuntime().exec("yarn -v");//, null, new File("/Users/macos/Desktop/TestProj/"));
} catch (IOException ex) {
ex.printStackTrace();
}
P/s:在调试模式下:IntelliJ 可以运行上面的代码,但 Netbeans 失败了。
在生产模式下(jar 文件):IntelliJ 也失败了。
编辑 2:
MACs-MacBook-Pro:~ macos$ which pwd
/bin/pwd
MACs-MacBook-Pro:~ macos$ which mkdir
/bin/mkdir
MACs-MacBook-Pro:~ macos$ which java
/usr/bin/java
MACs-MacBook-Pro:~ macos$ which yarn
/usr/local/bin/yarn
我发现如果我运行/bin 或/usr/bin 中的命令,代码运行正常(pwd,mkdir,java -version ...),但纱线在/usr/local/bin/,所以它没有不工作,我仍然不知道如何解决。
【问题讨论】:
-
您的机器上是否安装了
yarn? -
您是否尝试过将可执行文件与其参数分开?我不知道在使用
Runtime时是否会出现问题,但在使用ProcessBuilder时会出现问题。 -
@vahdet yarn 已安装,我可以使用命令行运行该命令
-
@SomeName 我刚刚搜索了
strace,但它可能在 mac 上不可用 -
快速谷歌搜索表明 DTrace 可用于此目的。这也可能与stackoverflow.com/questions/31045575/… 有关