exec: plattformunabhängig

Status
Nicht offen für weitere Antworten.

rabby

Mitglied
Hallo,

gerne würde ich sowohl unter Linux, als auch unter Windows (plattformunabhängig), einen Befehl in der Kommandozeile ausführen.
Der Befehl lautet unter beiden System gleich.
Unter Windows wäre soll es z.B. die in einem $PATH eingetragene test.exe und bei Linux besteht eine Systemverknüpfung zur Binary namens test.
Folglich kann unter beiden Systemen in der Kommandozeile bzw. Shell einfach "test param" aufgerufen werden, sodass ich gerne die selbe Funktion in der Javaanwendung verwenden würde.
Momentan sieht meine Funktion so aus:
[HIGHLIGHT="Java"] private void executeExe() {

try

{

//FileOutputStream fos = new FileOutputStream("test.txt");

Runtime rt = Runtime.getRuntime();

Process proc = rt.exec(ImageConstants.EXEC_COMMAND);

// any error message?

StreamGobbler errorGobbler = new

StreamGobbler(proc.getErrorStream(), "ERROR");



// any output?

StreamGobbler outputGobbler = new

StreamGobbler(proc.getInputStream(), "OUTPUT");



// kick them off

errorGobbler.start();

outputGobbler.start();



// any error???

int exitVal = proc.waitFor();

System.out.println("ExitValue: " + exitVal);

} catch (Throwable t)

{

t.printStackTrace();

}

}[/HIGHLIGHT]

für Windows habe ich derzeit noch diese Konstante in der Anwendung drin:
[HIGHLIGHT="Java"]public static final String EXEC_COMMAND = "cmd.exe /C test param";[/HIGHLIGHT]

Wie bekomme ich die Plattformunabhängigkeit hier zu Stande?

Vielen Dank für Eure Hilfe
 
Zuletzt bearbeitet von einem Moderator:

Ebenius

Top Contributor
Ich sehe hier keine Möglichkeit als eine Fallunterscheidung zwischen den verschiedenen Betriebssystemen zu machen.

Ebenius
 

Noctarius

Top Contributor
System.getProperty und dann os.version oder so. Damit kannst du den Betriebssystemnamen holen, kommt ein "Windows" drin vor Konstante mit ran packen
 

rabby

Mitglied
also wenn es ein Win System ist, muss die Konstante cmd /C beinhalten und ansonsten steht da gleich die Shell-Anweisung als Parameter drin?
 

Noctarius

Top Contributor
Les doch was ich geschrieben habe -.- Ich hab dir doch erklärt wie du rausbekommst ob's ein Windows ist, nen String "concatinaten" ,wenn eine Bedingung (if) erfüllt ist, wirst doch noch schaffen
 

rabby

Mitglied
Noctarius: ja, danke auch dafür. Was ich noch wissen wollte, ist nicht die Unterscheidung zwischen den Systemen, sondern in wiefern die Funktion das anders handhaben muss.
Da unter Linux wohl keine cmd.exe verwendet wird, denke ich, dass entfällt einfach beim Aufruf. Oder muss ein bin/bash her o.ä.? <- darauf war die Frage bezogen.
Sorry, ist wohl missverständlich...
 

Ebenius

Top Contributor
Noctarius, Tee trinken. :)

also wenn es ein Win System ist, muss die Konstante cmd /C beinhalten und ansonsten steht da gleich die Shell-Anweisung als Parameter drin?
Du hast hier ein gefährliches Wortproblem. Mit einer Shell-Anweisung ist normalerweise ein eigenes Kommando (alias Befehl) einer Shell gemeint. Du willst aber gar kein Shell-Kommando ausführen, sondern eine Programmdatei ausführen. Das geht prinzipiell ohne Shell, egal auf welchem System. Das heißt -- vorausgesetzt die Programmdatei befindet sich immer im Pfad --, Deine Unterscheidung muss lauten: Wenn ich im Windows bin, nimm "test.exe", sonst "test".

Ebenius
 

Noctarius

Top Contributor
Hast du nen Tee für mich Ebenius? :) (obwohl nee lieber nen Bier ^^)

Sorry rabby sollte nicht so blöd klingen wie es vielleicht rüber kam *schäm* ^^
 
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
Dimax Java Programm mit exec starten Java Basics - Anfänger-Themen 5
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
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
M Noch immer Probleme mit exec Java Basics - Anfänger-Themen 15
K exec.StdIn.Write Java Basics - Anfänger-Themen 7
B getRuntime().exec() Java Basics - Anfänger-Themen 4
P Vererbung Runtime.getRuntime().exec("blub"); Java Basics - Anfänger-Themen 11
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
J Window 7 Problem mit Runtime.getRuntime().exec("explorer") Java Basics - Anfänger-Themen 4
S .exe mit getRuntime.exec sichtbar ausführen Java Basics - Anfänger-Themen 3
K Eingabe für exec überprüfen Java Basics - Anfänger-Themen 2
D Runtime.getRuntime().exec(command); Java Basics - Anfänger-Themen 5
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
X Runtime.getRuntime().exec() Problem(inkonsistenter sch****) Java Basics - Anfänger-Themen 2
D Runtime.exec cygwin1.dll Java Basics - Anfänger-Themen 4
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
I Runtime.exec mit Adminrechten Java Basics - Anfänger-Themen 2
L Bitte um Hilfe: getRuntime().exec() Java Basics - Anfänger-Themen 12
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
M Runtime exec mit Ordner angabe Java Basics - Anfänger-Themen 7
T Process pro =Runtime.getRuntime.exec("wine /Datei Pfad/ Java Basics - Anfänger-Themen 8
S mit getRuntime.exec gestarteten Prozess überwachen Java Basics - Anfänger-Themen 2
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
T Runtime.getRuntime().exec mit parameterübergabe Java Basics - Anfänger-Themen 16
padde479 Runtime.getRuntime.exec() Leerzeichen unterdrücken Java Basics - Anfänger-Themen 2
G getRuntime().exec unix problem Java Basics - Anfänger-Themen 17
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
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
N Runtime.exec und Key event Java Basics - Anfänger-Themen 2
K Datein ausführen (exec) Java Basics - Anfänger-Themen 3
F Probleme mit Runtime.getRunTime().exec() Java Basics - Anfänger-Themen 7
G Probelm mit Runtime exec! Erstellen einer neuen Konsole. Java Basics - Anfänger-Themen 2
S Runtime.exec -> Thread.sleep -> Konflikt 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
I SWT Plattformunabhängig laden - verschiedene SWT .jar laden Java Basics - Anfänger-Themen 0
I Wann ist Client plattformunabhängig? Java Basics - Anfänger-Themen 22
brunothg text plattformunabhängig compilieren Java Basics - Anfänger-Themen 10
Y Preferences / Properties Anwendung plattformunabhängig Java Basics - Anfänger-Themen 4
D Mit Java plattformunabhängig die Systemzeit einstellen Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben