«команда написана с ошибкой или не найдена» в Win 11, но не в Win 10JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 «команда написана с ошибкой или не найдена» в Win 11, но не в Win 10

Сообщение Anonymous »

Год назад я создал проект Eclipse (Eclipse 2020-06, Java 8, Win 10), который использует библиотеку GIS LAStools, например. извлечь данные из пары файлов.
Сейчас я использую 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»