переменная окружения PATH окон набора во времени выполнения в Java

У меня есть программа Java, которая исчерпывает исполняемый файл с помощью Runtime.exec () метод. Я использую вариант, который берет в ряде параметрических усилителей командной строки как один аргумент и некоторые переменные среды как другой аргумент.

Переменная среды, которую я пытаюсь установить, является путем, таким образом, я являюсь передающим в "PATH=C:\some\path". Это не работает. Есть ли некоторый прием к этому или любым альтернативам. Я застреваю к Java 1.4, к сожалению.

5
задан Andrew Thompson 4 July 2012 в 05:01
поделиться

2 ответа

используйте http://java.sun.com/j2se/1.4.2/docs/api/java/lang/System.html#getenv%28java.lang.String%29 для получения окружения и его исправления, а затем используйте аромат [http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html#exec%28java.lang.String,%20java.lang.String[],%20java.io.File%29][1] для выполнения exec.

это работает с пакетным файлом, в котором есть путь.

package p;

import java.util.*;

public class Run {
    static String[] mapToStringArray(Map<String, String> map) {
        final String[] strings = new String[map.size()];
        int i = 0;
        for (Map.Entry<String, String> e : map.entrySet()) {
            strings[i] = e.getKey() + '=' + e.getValue();
            i++;
        }
        return strings;
    }

    public static void main(String[] arguments) throws Exception {
        final Map<String, String> env = new HashMap<String, String>(System.getenv());
        env.put("Path", env.get("Path") + ";foo");
        final String[] strings=mapToStringArray(env);
        Runtime.getRuntime().exec("cmd /C start foo.bat",strings);
    }

}
7
ответ дан 13 December 2019 в 05:32
поделиться

Если "PATH=C:\some\path" появляется в исходном коде, это будет неправильно, так как это будет пытаться избежать 's' и 'p' в этой строке, вместо этого вы будете использовать "PATH=C:\\some\\path" (экранируя косые черты). Кроме того, вы не хотите передавать его в виде строки напрямую, а в виде array строк (вероятно, с этим в качестве единственной строки в нем).

2
ответ дан 13 December 2019 в 05:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: