gpt4 book ai didi

java - 从 Java 调用 bash 脚本

转载 作者:行者123 更新时间:2023-11-30 06:43:00 24 4
gpt4 key购买 nike

我有一个用于调用 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 的 getErrorStream 提示确实很有帮助。

很明显,没有找到与原始 shell 脚本位于同一文件夹中的一些子脚本。

解决方案就像使用子脚本的绝对路径一样简单,因为工作目录不是被调用脚本的目录,而是调用应用程序的目录(在我的例子中是 Java 应用程序)

关于java - 从 Java 调用 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44101443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com