Я написал следующий код и не могу понять, как решить эту ошибку. Не уверен, что эта информация окажется полезной, но я использую Mac и использую редактор IntelliJ.Как запустить команду adb через файл Java?
public class TestCode {
public static void main(String[] args) throws Exception {
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("adb devices");
}
}
В результате «Исключение в потоке„основного“java.io.IOException: Не могу запустить программу„ADB“: ошибка = 2, Нет такого файла или каталога»
Однако, когда я бегу команда «adb devicees» из терминала. Я получаю список устройств, подключенных к моему компьютеру.
Для интересующихся, это полная трассировка стека.
Exception in thread "main" java.io.IOException: Cannot run program "adb": error=2, No such file or directory
at java.lang.ProcessBuilder.processException(ProcessBuilder.java:478)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:457)
at java.lang.Runtime.exec(Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:431)
at java.lang.Runtime.exec(Runtime.java:328)
at com.sonos.acr.test.TestCode.main(TestCode.java:6)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
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:53)
at java.lang.ProcessImpl.start(ProcessImpl.java:91)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
... 9 more
Благодарим вас за предложения, советы и/или помощь.
Я попытался сделать изменения, предложенные, а также добавлен полный путь к ADB, который на моей машине:/Applications/Android \ SDK/платформенные инструменты /, к сожалению, , эта же ошибка сохраняется. –
@JustinPapez «Android SDK» содержит пробел в своем имени или это просто опечатка в вашем комментарии? Попробуйте скопировать команду в путь по пути к пробелу без пробелов, чтобы проверить, не сохраняется ли такая же ошибка. –
Я протестировал это в своем Linux-окне, и следующее работает отлично для меня: Runtime.getRuntime(). Exec (new String [] {"/ tmp/space dir/ls", "-l"}); Обратите внимание, что я не избегаю пространства в имени каталога. –