用Java运行.sh

时间:2016-05-01 09:51:23

标签: java bash ubuntu

我有一个shell脚本,我试图从Java调用。 shell脚本包含:

public void bearbeiten(RowEditEvent event) {
    neuerEintrag.aendern((Erfasst) event.getObject());

    FacesMessage msg = new FacesMessage("Objekt geändert");
    FacesContext.getCurrentInstance().addMessage(null, msg);
}

在我使用的Java代码中:

cat /dev/tty.USB0 > file.txt

但它不起作用。当我从终端运行它时,它按预期工作。

3 个答案:

答案 0 :(得分:2)

你不能直接执行这样的rng脚本,因为它不是可执行文件。相反,您必须改为运行.sh

答案 1 :(得分:1)

首先,在Java代码中使用基于操作系统的功能并不是一种好的风格。而不是我建议你只使用系统输入/输出流。例如,如果您的程序应该处理脚本的输出,您可以执行以下操作:

cat /dev/tty.USB0 > java YourMainClass 

然后直接与System.in合作。

即使您的程序比脚本输出使用者更复杂,您也可以重写它以从程序中删除所有基于操作系统的部分,它将使您的代码更加稳定和可维护。

答案 2 :(得分:0)

你在做什么。好吧,它应该。

我猜这是什么/似乎错了:你可能在错误的地方寻找输出文件“file.txt”。

这是一个小实验

System.out.println("Output file - " + new File("file.txt"));
Process p= Runtime.getRuntime().exec("/home/myname/Scrivania/capture.sh");

第一行应告诉您在哪里查找文件。

P.S。当然,请记得导入java.io.File:)