java - 在 linux 中使用 ProcessBuilder 执行 shell 命令

标签 java linux shell processbuilder runtime.exec

我有一个代码,它接受一些 adb 命令并读取输入以稍后反射(reflect)在 JTextField 中。它在 windows 中工作正常,但在 linux 中,相同的代码会给出大量错误,例如 IOexception(没有这样的文件或目录)。在这种情况下,我们是否必须指定特定于操作系统的环境设置

ProcessBuilder process5 = new ProcessBuilder("adb", "shell","getprop","ro.product.model");   
Process p1 = process5.start();
InputStream stdin1 = p1.getInputStream();
BufferedReader writer1 = new BufferedReader(new InputStreamReader(stdin1));         
String model=writer1.readLine();

错误消息-

Exception in thread "main" java.io.IOException: Cannot run program "adb": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at pb.main(pb.java:24)
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:248)
at java.lang.ProcessImpl.start(ProcessImpl.java:134)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 1 more

最佳答案

可以用绝对路径调用adb吗? 您可以使用 whereis adb 找到绝对路径。 您还可以检查 echo $PATH from JAVA process builder 返回的内容,以获得与 Java 程序相同的路径。

关于java - 在 linux 中使用 ProcessBuilder 执行 shell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41616214/

相关文章:

java - 两种方法具有相同的删除功能,但都不会覆盖对方

c - 变量与存储在数组中的值的高效匹配

linux - 开发 Web 服务器上的基本颠覆服务器问题

node.js - 从作为子进程运行的脚本将 Node 作为后台进程运行

bash - 如何在 zsh 和 bash 的函数中设置 shell 退出陷阱

python - 如何将程序输出的数字以空格分隔放入 Bash shell 脚本中的数组中?

java - 数组到列表? Angular - Spring

java - 在 RecyclerView 中使用 Glide4 从 url 加载图像时图像加载缓慢

java - GridBagLayout 中的 JTextPane 的行为不符合预期

c++ - 如何在Linux终端中显示目录下的详细文件信息? - C++