简体   繁体   English

在Linux中使用ProcessBuilder执行Shell命令

[英]Executing shell commands using ProcessBuilder in linux

I have a code which takes some adb commands and reads the input to be later reflected in JTextField. 我有一个代码,它接受一些adb命令并读取输入,以便稍后在JTextField中反映出来。 It works fine in windows but in linux, the same code gives a host of errors such as IOexception(No such file or directory). 它在Windows中可以正常工作,但在Linux中,相同的代码会产生许多错误,例如IOexception(无此类文件或目录)。 Do we have to specify OS specific environment setup in this case 在这种情况下,是否需要指定特定于操作系统的环境设置

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();

Error mgs- 错误mgs-

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

Can you invoke adb with absolute path? 可以使用绝对路径调用adb吗? You can find absolute path with whereis adb . 您可以使用whereis adb找到绝对路径。 You can also check what echo $PATH from JAVA process builder returns in order to get same path as Java program. 您还可以检查JAVA流程生成器返回的echo $PATH返回什么,以获取与Java程序相同的路径。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM