我不知道为什么,但我只能在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就是这样做的,但我想展示如何使用命令行参数来开始该程序。