Syntax ProcessBuilder

handoffate

Mitglied
Moin,

ich versuche gerade auf meinem Linux-System per Java diverse externe Programme zu starten. Dafür benutze ich einen ProcessBuilder:
Java:
ProcessBuilder pb = new ProcessBuilder(command);
Process p = pb.start();

Das ganze funktioniert auch soweit ganz gut. Probleme habe ich mit einem bestimmten Befehl, der eine relativ verschachtelte Konstruktion darstellt. Ausführen möchte ich folgenden Konsolenbefehl:
Code:
timeout 300 mplayer -quiet -dumpstream dvb://"kabel eins" -dumpfile bla.ts
Wie genau muss ich das in den Konstruktor des ProcessBuilders eingeben, damit der Befehl auch richtig umgesetzt wird?

Danke für die Hilfe...
 

VfL_Freak

Top Contributor
Moin,

wo und wie bastelst Du denn den "command" zusammen ???:L

Vermute mal, dass es an den Hochkommata rund "Kabel eins" liegen könnte ...

Gruß
Klaus
 

handoffate

Mitglied
Hey,

im Endeffekt packe ich alles direkt in den Konstruktor, indem ich die einzelnen Argumente als Strings setzte.. Mein Versuch sah so aus:
Java:
ProcessBuilder pb = new ProcessBuilder("timeout", "300", "mplayer" , "-quiet", "-dumpstream", "dvb://\"kabel eins\"", "-dumpfile", "bla.ts");
Hab auch mehrere Kombinationen probiert, weil ich nicht wusste, ob beispielsweise der Teil dvb://... noch zum Argument dumpstream dazugehört oder nicht...
 

VfL_Freak

Top Contributor
Moin,

hmm, leider ist mir absolut nicht klar, was Dein Befehl überhaupt machen soll ...
Welches CMD/Programm/... möchstest Du denn aufrufen?

Ein Konsolenbefehl ist es wohl schon mal nicht ("timeout" ???:L)

Willst Du denn überhaupt die Konsole öffnen?
Dann fehlt (u. a.) ein "cmd" zu Beginn !

Gruß
Klaus
 

handoffate

Mitglied
sorry, da hab ich mich wohl unklar ausgedrückt. Es ist nicht direkt ein Konsolenprogramm, sondern programme, die auf diese Weise in der Shell-Konsole aufgerufen werden (ich will daher keine Konsole aufrufen).
timeout ist ein Programm, welches nach der angegebenen Zeit das aufgerufene Programm (hier mplayer) beendet, falls sich dieses noch nicht geschlossen hat. Mplayer soll den Stream vom dvb-Kanal in der entsprechenden Datei abspeichern.
 
Zuletzt bearbeitet:

VfL_Freak

Top Contributor
Moin,

also d. h. dass Du
<timeout 300 mplayer -quiet -dumpstream dvb://"kabel eins" -dumpfile bla.ts>
genau in der Konsole eingeben würdest ?

Hast Du mal versucht, dies als EINEN String an den PB zu übergeben? Also etwa so:
"timeout 300 mplayer -quiet -dumpstream dvb://\"kabel eins\" -dumpfile bla.ts"

Oder ggf. mit dem absoluten Pfad für 'timeout'?

Gruß
Klaus
 

turtle

Top Contributor
Also raten bringt hier nichts.

Ich schlage vor, das du dir genau ausgeben lässt, was da schief geht, indem du die Streams vom Prozess ausliest und ausgibst. Da steht genau drin, was los ist.

Java:
		ProcessBuilder processBuilder = new ProcessBuilder("bla");
		Process process = processBuilder.start();
		InputStream inputStream = process.getInputStream();
		dumpStream(inputStream);
		InputStream errorStream = process.getErrorStream();
		dumpStream(errorStream);

Java:
	private static void dumpStream(InputStream inputStream) throws IOException {
		BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
		String s = null;
		while ((s = bufferedReader.readLine()) != null) {
			System.out.println(s);
		}
	}

Gibt bei mir (unter Windows):
Code:
Exception in thread "main" java.io.IOException: Cannot run program "bla": CreateProcess error=2, Das System kann die angegebene Datei nicht finden
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1042)
	at A.main(A.java:14)
Caused by: java.io.IOException: CreateProcess error=2, Das System kann die angegebene Datei nicht finden
	at java.lang.ProcessImpl.create(Native Method)
	at java.lang.ProcessImpl.<init>(ProcessImpl.java:386)
	at java.lang.ProcessImpl.start(ProcessImpl.java:137)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1023)
	... 1 more
 

handoffate

Mitglied
Ich habs gefunden.. Es lag doch tatsächlich an den Anführungszeichen rund um den Kanalnamen. So läuft es tadellos:
Java:
ProcessBuilder pb = new ProcessBuilder("timeout", "300", "mplayer" , "-quiet", "-dumpstream", "dvb://kabel eins", "-dumpfile", "bla.ts");
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Tommy135 Syntax Highlighting Allgemeine Java-Themen 3
Elyt Compiler-Fehler Datei kann nicht erstellt werden. Die Syntax für den Dateinamen etc. ist falsch. Allgemeine Java-Themen 2
W JavaCC to create my only syntax Allgemeine Java-Themen 5
B Syntax-Erkennungs Problem Allgemeine Java-Themen 2
B Syntax-Highlighting abspeichern Allgemeine Java-Themen 7
T Parseerror bei richtiger Syntax Allgemeine Java-Themen 5
M Syntax Highlighter für MS Word? Allgemeine Java-Themen 2
H Pattern.compile Syntax Allgemeine Java-Themen 15
S Mail Adressen Syntax prüfen Allgemeine Java-Themen 22
C Syntax printf Allgemeine Java-Themen 5
S Eine Collection von Objekten mit LDAP Syntax filtern Allgemeine Java-Themen 5
P JTextPane mit Java (eclipse) Syntax Highlighting Allgemeine Java-Themen 4
D Kompakte Syntax für Funktionen Allgemeine Java-Themen 7
G Syntax für den Dateinamen Allgemeine Java-Themen 1
R Syntax Error, der keiner sein sollte Allgemeine Java-Themen 12
G Java Syntax Allgemeine Java-Themen 7
T Syntax Error Allgemeine Java-Themen 9
F Plugin damit M$ Word Java syntax versteht? Allgemeine Java-Themen 12
D Die <> Syntax Allgemeine Java-Themen 8
W Syntax - Frage Allgemeine Java-Themen 6
padde479 jEdit Syntax Highlighting Allgemeine Java-Themen 3
G Syntax-Fehler beim aufrufen von generischen Klassenmethoden Allgemeine Java-Themen 4
V syntax problem Allgemeine Java-Themen 6
S Syntax Error, insert "AssignmentOperator Expression&amp Allgemeine Java-Themen 3
F log4j XML-Syntax Allgemeine Java-Themen 4
B Syntax error on token ,VariableDeclaratorId expected after. Allgemeine Java-Themen 3
G Syntax Übersicht Suche Allgemeine Java-Themen 7
A gültige syntax einer ip-adresse? Allgemeine Java-Themen 2
S java syntax zusammenfassung Allgemeine Java-Themen 1
L Super User via Processbuilder (Linux) Allgemeine Java-Themen 3
T ProcessBuilder Output Allgemeine Java-Themen 12
S Command funktioniert in Kommandzeile aber nicht mit ProcessBuilder bzw. Runtime.exec auf MAC Allgemeine Java-Themen 3
E ProcessBuilder findet Datei nicht Allgemeine Java-Themen 3
V ProcessBuilder exe file Allgemeine Java-Themen 3
D ProcessBuilder und die while() Allgemeine Java-Themen 3
L Input/Output ProcessBuilder und Windows - Konsole verbergen? Allgemeine Java-Themen 5
T ProcessBuilder (java.lang.NoClassDefFoundError) Allgemeine Java-Themen 2
G ProcessBuilder Allgemeine Java-Themen 2
B Externe Programme und ProcessBuilder Allgemeine Java-Themen 5
V Shellscript über ProcessBuilder starten Allgemeine Java-Themen 2
A ProcessBuilder Allgemeine Java-Themen 8
Y ProcessBuilder, Prozess wird gestartet, aber Anwendung nicht Allgemeine Java-Themen 5
B ProcessBuilder: kann Ordner im home nicht finden Allgemeine Java-Themen 2
W Windows XP: ProcessBuilder.start: Kommandoshell anzeigen Allgemeine Java-Themen 3
A Runtime oder ProcessBuilder exe starten Allgemeine Java-Themen 3
N ProcessBuilder Allgemeine Java-Themen 5
N ProcessBuilder Allgemeine Java-Themen 8
F ProcessBuilder - Exception Allgemeine Java-Themen 2
J Handle + ProcessBuilder: Wer sieht den Fehler? Allgemeine Java-Themen 2
D Formatierte Ausgabe vom ProcessBuilder Allgemeine Java-Themen 4
D ProcessBuilder und Scanner Probleme mit einigen Prozessen Allgemeine Java-Themen 2
F Pfadangabe bei Processbuilder Allgemeine Java-Themen 4

Ähnliche Java Themen


Oben