Runtime.getRuntime().exec mit parameterübergabe

Status
Nicht offen für weitere Antworten.

tmp

Mitglied
hallo!

und zwar sieht meine verzeichnisstruktur folgendermaßen aus:

programm/
->CNF
->SOLVER/walksat/...
->javaklassen

nun möchte ich aus einer javaklasse ein programm über die bash starten.
allerdings klappt das nicht so recht:

Code:
try {
			String line;
			Process p = Runtime.getRuntime().exec("SOLVER/walksat/walksat -out CNF/SuSolved.cnf < CNF/SuEncoded.cnf");
			BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
			while ((line = input.readLine()) != null) {System.out.println(line);}
			input.close();
		}
		catch (Exception err) {err.printStackTrace();}

das programm wird leider nicht ausgeführt und ich vermute fast,dass es am relativen pfad liegt.
ich möchte aber auf keinen fall mit absoluten pfaden arbeiten.

habt ihr einen vorschlag,wie ich das problem lösen kann?
vielen dank schon mal.


edit:
die pfadangaben stimmen - nur die parameter werden anscheinend nicht korrekt übergeben
 

tmp

Mitglied
nein es kommt keiner.
aber es wird weder etwas ausgegeben (was ja passieren sollte)
noch wird eine datei erzeugt (was das programm bei manuellem aufruf über die kommandozeile aber tut)
 

tmp

Mitglied
wenn ich die datei nicht im ordner habe,kommt der fehler dass die datei nicht gefunden wurde.

also wird sie wohl ausgeführt. aber die parameter werden anscheinend nicht korrekt übergeben. woran kann das liegen?

ausserdem wird mir der output auch nicht ausgegeben
 

tmp

Mitglied
also ich hab jetzt rausgefunden,dass er das programm mit relativem pfad findet.

es scheitert nur daran,dass die parameter nicht richtig übergeben werden

Process p = Runtime.getRuntime().exec("SOLVER/walksat/walksat -out CNF/SuSolved.cnf < CNF/SuEncoded.cnf");

muss man das vlt irgendwie anders übergeben?
 

tmp

Mitglied
Code:
String cmdstart[] = { "SOLVER/walksat/walksat", "-out CNF/SuSolved.cnf", "< CNF/SuEncoded.cnf"};

Process p = Runtime.getRuntime().exec(cmdstart);


das klappt leider auch nicht :(
 

Leroy42

Top Contributor
Befindet sich dein Programm überhaupt im richtigen Ordner?

Gib' doch direkt vor Aufruf des exec(...) mal dein
aktuelles Verzeichnis aus:

Code:
System.out.println(new File(".").getAbsolutePath());

und befindet sich dann darunter das File "CNF/SuSolved.cnf"? ???:L
 

tmp

Mitglied
der pfad stimmt.
das programm walksat wird auch gefunden.

nur die parameterübergabe an das programm funktioniert nicht.

"-out CNF/SuSolved.cnf" bedeutet nur,dass walksat diese datei erzeugen soll und
"< CNF/SuEncoded.cnf" ist die eingabe datei,welche auch vorhanden ist.

ich hatte testhalber auch mal folgendes probiert:
Code:
			String[]  arg = {"-out CNF/SuSolved.cnf", "< CNF/SuEncoded.cnf"};
			Process p = Runtime.getRuntime().exec("SOLVER/walksat/walksat", arg);

dabei bleibt das programm aber hängen. d.h. es passiert einfach garnix und ich muss den prozess beenden.

was mich ausserdem wundert:
eigentlich sollte mir die ausgabe von walksat ja ausgegeben werden. das passiert aber nicht.
 

Leroy42

Top Contributor
tmp hat gesagt.:
was mich ausserdem wundert:
eigentlich sollte mir die ausgabe von walksat ja ausgegeben werden. das passiert aber nicht.

Das geschieht nicht von alleine. Du mußt schon den Outputstream
deines erzeugten Prozesses abgreifen und dessen Ausgaben selbst
an System.out weiterleiten.
 

tmp

Mitglied
ich stehe gerade vor einem merkwürdigen problem:

Code:
try {
			
			Process p = Runtime.getRuntime().exec("SOLVER/walksat/walksat");
			in = new BufferedReader(new InputStreamReader(p.getInputStream()));
			while ((text = in.readLine()) != null) { System.out.println(text);}
	      }
		
		catch (Exception e) { e.printStackTrace();}

kommentiere ich die zeile "while ((text = in.readLine()) != null) { System.out.println(text);}" aus,wird walksat ausgeführt
(allerdings habe ich dann keine ausgabe)

sobald ich sie einfüge,bleibt das programm hängen und ich muss es von hand beenden.
 

tmp

Mitglied
also der code sieht mittlerweile so aus:

Code:
		try {
			String[]  arg = {"SOLVER/walksat/walksat","-out CNF/SuSolved.cnf", "< CNF/SuEncoded.cnf"};
			Process p = Runtime.getRuntime().exec(arg);
			in = new BufferedReader(new InputStreamReader(p.getInputStream()));
			while ((text = in.readLine()) != null) { System.out.println(text);}
	      }
		
		catch (Exception e) { e.printStackTrace();}

wenn ich die methode nun ausführe, kommt keine meldung und kein fehler.

starte ich "SOLVER/walksat/walksat -out CNF/SuSolved.cnf < CNF/SuEncoded.cnf" von hand,
wird mir aber sehr viel text ausgegeben.

woran kann das liegen? selbst der aufruf von walksat allein würde schon ausgabetext bringen.
seht ihr vlt noch irgendwo einen fehler?
 

HoaX

Top Contributor
tmp hat gesagt.:
hallo!
nun möchte ich aus einer javaklasse ein programm über die bash starten.
allerdings klappt das nicht so recht:

Code:
			Process p = Runtime.getRuntime().exec("SOLVER/walksat/walksat -out CNF/SuSolved.cnf < CNF/SuEncoded.cnf");

wenn du eine bash starten willst solltest du das auch tun:

bash -c "befehlt der | ausgeführt werden > soll"

so wie du das da startest wird < als parameter an dein programm übergeben. < ist eine funktion deiner shell! (bash)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
DoubleM Runtime.getRuntime().exec Frage Java Basics - Anfänger-Themen 2
N Best Practice Doppelte und einfach Anführungsstriche in Runtime.getruntime().exec() Java Basics - Anfänger-Themen 6
O Methoden Runtime.getRuntime().exec(befehl); Java Basics - Anfänger-Themen 6
P Vererbung Runtime.getRuntime().exec("blub"); Java Basics - Anfänger-Themen 11
J Window 7 Problem mit Runtime.getRuntime().exec("explorer") Java Basics - Anfänger-Themen 4
D Runtime.getRuntime().exec(command); Java Basics - Anfänger-Themen 5
X Runtime.getRuntime().exec() Problem(inkonsistenter sch****) Java Basics - Anfänger-Themen 2
G Runtime.getRuntime().exec(command) für Mac OS! Java Basics - Anfänger-Themen 7
G Runtime.getRuntime().exec und Exception? Java Basics - Anfänger-Themen 3
Z kleine frage zu: Runtime.getRuntime().exec("cmd /c) Java Basics - Anfänger-Themen 3
O Aktuelles Verzeichnis Runtime.getRuntime().exec Java Basics - Anfänger-Themen 6
T Process pro =Runtime.getRuntime.exec("wine /Datei Pfad/ Java Basics - Anfänger-Themen 8
padde479 Runtime.getRuntime.exec() Leerzeichen unterdrücken Java Basics - Anfänger-Themen 2
B mit Runtime.getRuntime().exec auch HTML-Dateien öffnen? Java Basics - Anfänger-Themen 7
G Parameterübergabe bei Runtime.getRuntime().exec Java Basics - Anfänger-Themen 16
F Probleme mit Runtime.getRunTime().exec() Java Basics - Anfänger-Themen 7
M Runtime.getRuntime().exec() Problem Java Basics - Anfänger-Themen 3
C Kann java.exe nicht aus Runtime.getRuntime().exec() starten Java Basics - Anfänger-Themen 4
J Programm was üer Runtime.getRuntime gestartet wird erkennt String Parameter nicht Java Basics - Anfänger-Themen 0
I Runtime.getRuntime mit delay? Java Basics - Anfänger-Themen 2
J Programm beenden ohne System.exit() oder Runtime.exit() Java Basics - Anfänger-Themen 5
J Mit OpenJDK entwickeln aber Oracle SE Runtime installieren? Java Basics - Anfänger-Themen 6
I equals (Override) mit eigener Exception (keine Runtime-Exception) Java Basics - Anfänger-Themen 9
R Einfaches refresh während runtime Java Basics - Anfänger-Themen 4
L0MiN Input/Output Wie kann ich Kompilierfehler richtig ausgeben lassen (Runtime)? Java Basics - Anfänger-Themen 1
D Input/Output Runtime().exec fehler abfangen Java Basics - Anfänger-Themen 4
D RunTime Exec Java Basics - Anfänger-Themen 7
D Runtime exec output wiedergeben Java Basics - Anfänger-Themen 1
G Wie bekomme ich alle Ausgaben von runTime.exec() Java Basics - Anfänger-Themen 7
T java ohne runtime ? Java Basics - Anfänger-Themen 6
B Error vs Runtime exception Java Basics - Anfänger-Themen 4
K The Java Runtime Environment cannot be found. Java Basics - Anfänger-Themen 6
G Fehlermeldung: A fatal error has been detected by the Java Runtime Environment Java Basics - Anfänger-Themen 7
pg1337 Methoden Runtime Exception Java Basics - Anfänger-Themen 13
F Runtime - Ausführung abwarten Java Basics - Anfänger-Themen 6
N Java 6 / J2SE Runtime deinstallieren Java Basics - Anfänger-Themen 11
A JAR2EXE -> Java Runtime Environment not found Java Basics - Anfänger-Themen 4
P Probleme mit Runtime.exec und Leerzeichen Java Basics - Anfänger-Themen 15
S Mit Runtime.exec() ImageMagick aufrufen -> Problem Java Basics - Anfänger-Themen 5
D Runtime.exec cygwin1.dll Java Basics - Anfänger-Themen 4
B Externe .exe-Dateien starten +Runtime Java Basics - Anfänger-Themen 6
G Mittels Runtime prüfen ob ein Programm läuft? Java Basics - Anfänger-Themen 18
I Runtime.exec mit Adminrechten Java Basics - Anfänger-Themen 2
T Seltsame Runtime-Fehlermeldung Java Basics - Anfänger-Themen 4
M Runtime exec mit Ordner angabe Java Basics - Anfänger-Themen 7
B Unklarheit bei Applets und Runtime Java Basics - Anfänger-Themen 5
P custom EventDispatcher fehlermeldung in der runtime bei invo Java Basics - Anfänger-Themen 27
D Runtime Prozeß hängt sich auf. in der Kommandozeile gehts Java Basics - Anfänger-Themen 5
O Java Runtime Java Basics - Anfänger-Themen 2
G runtime in java Java Basics - Anfänger-Themen 31
G Runtime.exec() Problem Java Basics - Anfänger-Themen 4
Z linux-befehl Runtime exec Java Basics - Anfänger-Themen 2
M Runtime.exec() Java Basics - Anfänger-Themen 5
G Batch aufrufen klappt nicht mit Runtime Java Basics - Anfänger-Themen 5
N Runtime.exec und Key event Java Basics - Anfänger-Themen 2
T Mit Runtime unter Windows einen Ordner öffnen Java Basics - Anfänger-Themen 2
P runtime geht nicht? Java Basics - Anfänger-Themen 16
P Gibt es Probleme mit Runtime Objekten in Servlets? Java Basics - Anfänger-Themen 3
G Probelm mit Runtime exec! Erstellen einer neuen Konsole. Java Basics - Anfänger-Themen 2
P Runtime problem Java Basics - Anfänger-Themen 5
D 2 Verständnisfragen zu Threads und Runtime Java Basics - Anfänger-Themen 5
S Runtime.exec -> Thread.sleep -> Konflikt Java Basics - Anfänger-Themen 7
C Syntax Probleme mit Runtime javascript Java Basics - Anfänger-Themen 9
B getRuntime().exec() Java Basics - Anfänger-Themen 4
M Grep über .getRuntime Java Basics - Anfänger-Themen 12
S .exe mit getRuntime.exec sichtbar ausführen Java Basics - Anfänger-Themen 3
L Bitte um Hilfe: getRuntime().exec() Java Basics - Anfänger-Themen 12
S mit getRuntime.exec gestarteten Prozess überwachen Java Basics - Anfänger-Themen 2
G getRuntime().exec unix problem Java Basics - Anfänger-Themen 17
N Und noch eine Frage über getRuntime() Java Basics - Anfänger-Themen 4
Z Frage nach getRunTime() Java Basics - Anfänger-Themen 2
Dimax Java Programm mit exec starten Java Basics - Anfänger-Themen 5
M Noch immer Probleme mit exec Java Basics - Anfänger-Themen 15
K exec.StdIn.Write Java Basics - Anfänger-Themen 7
C javac, exec, -sourcepath, Umgebungsvariablen Java Basics - Anfänger-Themen 9
C exec Aufruf mit Leerzeilen im Pfad Java Basics - Anfänger-Themen 3
C exec Umgebungsvariablen Java Basics - Anfänger-Themen 2
K Eingabe für exec überprüfen Java Basics - Anfänger-Themen 2
R exec: plattformunabhängig Java Basics - Anfänger-Themen 7
F Leerzeichen in Pfadangabe beim Befehl exec() Java Basics - Anfänger-Themen 5
T Benötige ich einen thread bei zugriff getRunetime.exec ? Java Basics - Anfänger-Themen 4
K Datein ausführen (exec) Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben