【问题标题】:Java, Caused by: java.io.IOException: error=2, No such file or directoryJava,原因:java.io.IOException:error=2,没有这样的文件或目录
【发布时间】: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/… 有关

标签: java command


【解决方案1】:

终于找到答案了,因为我启动的进程和终端的进程不同,所以无法访问/usr/local/bin,必须添加-l才能以登录用户的身份运行命令。 Runtime.getRuntime().exec(new String[]{"bash", "-l", "-c", cmd}, null, new File(f))

【讨论】:

    【解决方案2】:

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

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

    相关部分是:

    埃诺特

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

    要查看您的进程使用哪个特定路径启动,请运行 java witj strace -f

    【讨论】:

      【解决方案3】:

      在我的例子中,我使用了一个 ANT 脚本,该脚本在某个时候调用了带有 fork=true 属性的 javac 任务。受 maphongba008 答案的启发,我删除了那个分叉,所以我不再收到同样的错误。

      【讨论】:

        【解决方案4】:

        这对我有用:

        npm install -g yarn
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-28
          • 2015-02-18
          • 1970-01-01
          • 2016-08-09
          • 1970-01-01
          • 1970-01-01
          • 2019-01-01
          • 2015-09-25
          相关资源
          最近更新 更多