我有一个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
但它不起作用。当我从终端运行它时,它按预期工作。
答案 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:)