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
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: