Java,引起:java.io.IOException:error = 2,没有这样的文件或目录

问题描述 投票:2回答:2
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/,所以它不起作用,我仍然没有我知道如何解决。

java command
2个回答
0
投票

由于error代码2建议您错误地指定了路径。错误代码对应于POSIX ENOENT和“没有这样的文件或目录”其char * strerror(int errno)表示。

要自行解决问题,您可以阅读手册页http://man7.org/linux/man-pages/man2/execve.2.html

相关部分是:

ENOENT

文件filename或脚本或ELF解释器不存在,或者找不到文件或解释器所需的共享库。

要查看进程启动的特定路径,请使用qazxsw poi运行java


0
投票

我终于找到了答案,因为我启动的进程与终端的进程不同,所以无法访问/ usr / local / bin,必须添加strace -f来运行登录用户的命令。 -l

© www.soinside.com 2019 - 2024. All rights reserved.