PDA

View Full Version : Runtime.getRuntime().exec() mit verschiedenen Java-Versionen



max40
07-01-11, 15:10
moin,

per
Runtime.getRuntime().exec(command); läuft der Aufruf mit der Java-Version aus /QIBM/ProdData/Java400/jdk6 ohne Probleme, jedoch mit der /QOpenSys/QIBM/ProdData/JavaVM/jdk60/32bit bzw. auch 64bit Version erhalte ich folgende Fehlermeldung:

java.io.IOException: Cannot run program "myprogram": myprogram: not found
at java.lang.ProcessBuilder.start(ProcessBuilder.java :460)
at java.lang.Runtime.exec(Runtime.java:605)
at java.lang.Runtime.exec(Runtime.java:443)
at java.lang.Runtime.exec(Runtime.java:340)
...
at java.lang.Thread.run(Thread.java:736)
Caused by: java.io.IOException: myprogram: not found
at java.lang.ISERIESProcess.fullPath(ISERIESProcess.j ava:371)
at java.lang.ISERIESProcess.<init>(ISERIESProcess.java:161)
at java.lang.ProcessImpl.start(ProcessImpl.java:94)
at java.lang.ProcessBuilder.start(ProcessBuilder.java :453)
... 8 more


Die Umgebungsvariablen sind vor dem Aufruf vom Java-Programm gesetzt worden und ein
System.getProperty("PATH") gibt die richtigen Pfad-Angaben zurück.

Warum ist da ein Unterschied?
Was muss anders gemacht werden?

Danke + Gruß
Max

Tossenberger
31-01-11, 07:38
Wie sieht denn "command" genau aus?

Gruß
RT

max40
31-01-11, 13:58
moin,

der command ist:

lpoptions -d prt01

gruß+danke
max

Tossenberger
31-01-11, 14:34
Ich nehme an es handelt sich um ein Shell-Script.
Ist denn dort das Executable-Bit gesetzt? Mit "ls -l lpoptions" prüfen.
Falls nicht gesetzt mit "chmod +x lpoptions" setzen und den Aufruf nochmals testen.

Gruß
RT

max40
01-02-11, 07:34
moin,
die Attribute sind richtig gesetzt.
Und mit der /QIBM/ProdData/Java400/jdk6 Version läuft es ja auch.

Hast du noch weitere Vorschläge?

Danke+Gruß
max

Tossenberger
01-02-11, 08:05
Es wäre interessant zu wissen ob das Shell-Script schon nicht gefunden wird (warum dann myprogram?) oder die Folgeverarbeitung innerhalb des Scriptes den Fehler wirft.
Dazu würde ich im Script ein "echo ich bin drin" probehalber setzen. (Natürlich nach vorher wegkopieren und so...)

Wird denn das command "lpoptions -d prt01" in Java direkt per Zuweisung gesetzt oder werden da irgendwelche konfigurationsabhängige Kurven geflogen? Die Frage deshalb, da das "myprogram" nach etwas nicht initialisiertem klingt.

Gruß
RT

max40
01-02-11, 08:52
myprogram war nur ein Ersatz für lpoptions weil ich generell die Probleme habe.

ich werde nochmal schauen wie es aussieht wenn ich den kompletten Pfad zum Programm vorweg stelle, vielleicht hat er ja Probleme damit die Programme über die PATH-variable zu ermitteln.

ich melde mich dann nochmal dazu.

gruß max

max40
01-02-11, 09:59
wie es aussieht hat er Probleme mit der Umgebungsvariable PATH

ich rufe das ganze jetzt mit /path/to/my/lpoptions auf.

Damit geht es erstmal.

Das andere bleibt noch ein Rätsel.

Gruß Max