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)
Hi there, I have a weird problem when execute a command using Java. I used the following code to run a command, if I run mkdir testFolder
, the program run successful, but if I changed the command like yarn -v
then error happen.
try {
Process process = Runtime.getRuntime().exec("yarn -v");//, null, new File("/Users/macos/Desktop/TestProj/"));
} catch (IOException ex) {
ex.printStackTrace();
}
P/s: In debug mode: IntelliJ could run above code, but Netbeans failed.
In production mode (jar file): IntelliJ failed too.
Edit 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
I found that if I run a command that is in /bin
or /usr/bin
, the code run ok (pwd, mkdir, java -version ...), but yarn is in /usr/local/bin/
, so it didn't work, and I still don't know how to fix.
yarn
installed on your machine? – InfixRuntime
, but it is when using aProcessBuilder
. – Antimerejava
compare the path that is passing toexec
syscall when running from cmd and java correapondingly. Usestrace
. – Carvalhostrace
, but it may unavailable on mac – DariusError: sudo: no tty present and no askpass program specified
– DariusEACCES
error has different code (13). – CarvalhoError: env: node: No such file or directory
– Darius