如何在 Java (Raspberry pi) 中执行 bash 命令
How to execute bash commands in Java (Raspberry pi)
我不知道为什么,但我只能通过代码在我的 Raspberry 3B 上执行非常小的命令托盘(我什至可以执行 echo)。出于某种原因,您通常可以在终端本身执行的命令中有 99% 无法通过代码执行。
示例:我执行此 java 代码:
Runtime.getRuntime().exec("echo hi");
我明白了:
`java.io.IOException: 无法 运行 编程“echo hi”:错误=2,没有那个文件或目录
在 java 代码中是否有我无法访问的 PATH 配置?为什么我不能从代码中对 raspberry 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
会做同样的事情,但我想展示如何使用命令行参数来启动程序。
我不知道为什么,但我只能通过代码在我的 Raspberry 3B 上执行非常小的命令托盘(我什至可以执行 echo)。出于某种原因,您通常可以在终端本身执行的命令中有 99% 无法通过代码执行。
示例:我执行此 java 代码:
Runtime.getRuntime().exec("echo hi");
我明白了: `java.io.IOException: 无法 运行 编程“echo hi”:错误=2,没有那个文件或目录
在 java 代码中是否有我无法访问的 PATH 配置?为什么我不能从代码中对 raspberry 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
会做同样的事情,但我想展示如何使用命令行参数来启动程序。