ich diesen MCVE für eine Java-Klasse haben ein Bash-Skript aufrufen:Aufruf Bash-Skript von Java
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();
}
}
}
Wenn ich die kompilierte .class-Datei im selben Verzeichnis wie myscript.sh haben, funktioniert es ganz gut. Sobald ich die .class-Datei in einen anderen Ordner verschiebe, wird das Skript nicht mehr ausgeführt, obwohl ich immer noch den absoluten Pfad zum Skript verwende.
Ich testete dies mit JDK 1.8 auf einem BeagleboneBlack laufenden Angstrom, wenn diese Information für etwas gut ist.
Wie kann ich das Skript ausführen, obwohl es an einem anderen Ort ist?
Do nicht derjenige des gerufenen Skript aber das eines der aufrufenden Anwendung (der Java-App in meinem Fall) ist Sie erhalten eine Ausnahme, wenn das Skript nicht ausgeführt wird? – Samuel
@ Samuel Nö. Ich bekomme einfach keine Ausgabe – mxcd
Kannst du 'getInputStream' in' getErrorStream' im obigen Code ändern und es erneut ausführen? Hoffentlich erhalten Sie eine nützliche Ausgabe – Samuel