我不知道为什么,但我只能在raspberry 3b上执行一个非常小的命令从代码(我坐着甚至执行回声)。出于某种原因,您通常在终端本身中可以执行的99%的命令,您无法从代码中完成。
示例:我执行此Java代码:
Runtime.getRuntime().exec("echo hi");
.
我得到这个: `java.io.ioexception:无法运行程序"echo hi":错误= 2,没有这样的文件或目录
是否有一个我没有访问java代码的PATH配置?为什么我无法从代码执行任何命令到覆盆子pi?
分析解答
我写了一些使用exec()
调用的示例。还有其他方法从Java中启动进程(ProcessBuilder是关键字在此处),但此示例相对容易理解:
import java.util.*;
import java.io.*;
import java.text.*;
public class X {
public static void main(String argv[])
{
String args[] = { "/bin/bash", "-c", "uptime" };
try {
Process p = Runtime.getRuntime().exec(args);
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = in.readLine();
while (line != null) {
System.out.println("Found: " + line);
line = in.readLine();
}
} catch (Exception e) {
System.err.println("Some error occured : " + e.toString());
}
}
}
基本上,程序执行命令行/bin/bash -c uptime
;只是一个uptime
就是这样做的,但我想展示如何使用命令行参数来开始该程序。