【发布时间】:2017-10-21 10:29:27
【问题描述】:
我有一个用于调用 bash 脚本的 Java 类的 MCVE:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class Test
{
static BufferedReader in;
public static void main(String[] args) throws Exception
{
String[] cmd = new String[]{"/bin/sh", "/usr/myapp/myscript.sh", "parameter1"};
Process pr = Runtime.getRuntime().exec(cmd);
in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line = in.readLine();
while(line != null)
{
System.out.println(line);
line = in.readLine();
}
}
}
当我将已编译的 .class 文件与 myscript.sh 放在同一目录中时,它工作得很好。 一旦我将 .class 文件移动到另一个文件夹,它就不再执行脚本,尽管我仍然使用脚本的绝对路径。
如果这些信息对某些东西有用,我会在运行 Angstrom 的 BeagleboneBlack 上使用 JDK 1.8 对此进行测试。
如何运行脚本,尽管它位于不同的位置?
【问题讨论】:
-
脚本不运行时是否出现异常?
-
@Samuel 不。我根本没有得到任何输出
-
能不能把上面代码中的
getInputStream改成getErrorStream再运行一次?希望你能得到一些有用的输出
标签: java bash beagleboneblack angstrom-linux