Festlegen der Umgebung für ProcessBuilder

Ich habe ein seltsames problem mit der Einstellung der Linux-Umgebung von Java (1.6), speziell die variable "PATH".

Kurz gesagt, ich habe eine pipeline für das laufende native Prozesse, die verwendet java.lang.ProcessBuilder. Der Benutzer kann Optional die environment-Variablen über eine HashMap namens environment:

ProcessBuilder pb = new ProcessBuilder(args);
Map<String, String> env = pb.environment();
if (environment != null)
   env.putAll(environment);
Process process = pb.start();

Den env variable wird richtig eingestellt, wenn ich dump es auf der Konsole, mit einem korrekten Wert für die variable PATH. Allerdings läuft der Prozess führt zu einer geworfen Exception:

java.io.IOException: error=2, No such file or directory

Den gleichen Prozess gut läuft mit identischen Umgebungsvariablen, die in der terminal-shell. Um dies zu testen, lief ich Eclipse NACH der Einstellung der Umwelt in der Klemme. In diesem Fall ist der ProcessBuilder Prozess korrekt läuft.

Also, was muss geschehen, dass die ProcessBuilder ist nicht die Umgebung, die ich gesetzt, aber die aktuellen System-Umgebung statt.

Ich finde keine befriedigenden Antworten auf dieses problem online. Vielleicht ist dies ein OS-spezifisches Problem? Oder sonst etwas, das mir fehlt?

  • Vielleicht versuchen sysout die variable PATH aus und poste es hier, vielleicht können wir Fleck etwas..
  • Eine andere Sache zu beachten, der in Windows ist, dass, während der Fall von Umgebungsvariablen ist "in der Regel nicht wichtig" (Zitat der System.getenv javadoc), so dass Sie können call System.getenv("path") oder System.getenv("PATH") austauschbar mit ähnlichen Ergebnissen, dasselbe gilt nicht für das Feld der ProcessBuilder da die Map auf die direkt zugegriffen wird, anstatt durch eine spezielle getter, so dass Abweichungen in der groß-und Kleinschreibung führen Fehler... Hinweis: wenn Sie do wollen Sie den Weg von einem ProcessBuilder in Windows, verwenden environment.get("Path").
  • Den Tipp Gaben Sie sagen, verwenden des Path unter windows war erstaunlich !!! Ich verbrachte Wochen zusammen, da dieses problem in ProcessBuilder!! VIELEN DANK !!! 🙂 🙂
  • gerne helfen... ich kann mich nicht erinnern, wie lange es vereitelt mich für: nicht ganz Wochen, aber lange genug, um frustrierend sein 🙂
InformationsquelleAutor Andrew Reid | 2012-04-05
Schreibe einen Kommentar