Сейчас я использую Win 11 на другом компьютере и хочу снова поработать над проектом, поэтому я скопировал старый проект, установил ту же версию Java, ту же версию Eclipse (с теми же настройками, насколько я видел) и ту же версию библиотеки.
Мой код:
Код: Выделить всё
Process p = null;
ArrayList lines = new ArrayList();
String lasbinpath = "somepath\\LAStools\\bin";
String command = "lasindex64 -i someotherpath\\myfile.laz";
try {
ProcessBuilder builder = new ProcessBuilder("cmd.exe", "/c", command);
Map env = builder.environment();
env.put("path", lasbinpath);
builder.redirectErrorStream(true);
p = builder.start();
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while(true) {
line = br.readLine();
if (line==null) { break; }
lines.add(line);
}
br.close();
} catch(IOException e) {
e.printStackTrace();
} finally {
if(p!=null) { p.destroy(); }
}
Код: Выделить всё
The "DOSKEY" command is either misspelled or could not be found.
Вчера я снова запустил старый компьютер с Win 10, и тот же код по-прежнему работает там нормально, даже с последней версией библиотеки.
На Win 11 та же ошибка появляется, когда я запускаю код в Eclipse 2025-09 с OpenJDK 24 (даже при запуске от имени администратора), но при запуске команды библиотеки непосредственно в командной строке ошибок не возникает. Файл «doskey.exe» существует в папке «System32», и хотя папки «Windows» и «System32» защищены, я, конечно, могу без проблем получить к ним доступ вручную. Другие (родные) команды, такие как java -version и dir, отлично работают с моим кодом.
Если я удалю env.put("path", lasbinpath) и вместо этого вручную добавлю путь к PATH, ошибок больше не будет, и код работает так, как ожидалось.
Я знаю, что Win 11 может быть странным в отношении разрешений, и раньше у меня были проблемы с ними (приложение, которое работало нормально на Win 10 не может получить доступ к файлам в Win 11, если не запущен от имени администратора), так что я думаю, что это так и здесь.
Есть несколько результатов поиска Google о том, что в Win 11 что-то работает не так, как ожидалось, по сравнению с Win 10 (не только с Java), но ничего о ProcessBuilder. Есть ли какой-то особый способ настроить Eclipse и/или ProcessBuilder, чтобы предоставить им доступ и работать с временным PATH?
Подробнее здесь: https://stackoverflow.com/questions/798 ... not-win-10
Мобильная версия