API вызывает следующий метод, который будет использовать проводник Windows для открытия папки по заданному пути (проверка происходит до к этому методу, который гарантирует, что путь существует и является папкой)
Код: Выделить всё
public int openWindowsFileExplorer(final Path path) {
try {
String absolutePath = path.toAbsolutePath().toString();
ProcessResult result = new ProcessExecutor()
.command("C:/Windows/explorer.exe " , absolutePath)
.readOutput(true)
.execute();
String output = result.outputString();
String outputUTF8 = result.outputUTF8();
int exitValue = result.getExitValue();
log.debug("Output: {}, Output UTF8: {}, Exit value: {}", output, outputUTF8, exitValue);
} catch (IOException ioException) {
log.error("Could not open directory {}", path, ioException);
return 0;
}
return 1;
}
Происходит следующее: если я запускаю JAR, перейдите на страницу HTML и щелкните ссылку, которая вызывает API, на вкладке сети консоли браузера показано, что запрос к API переходит в состояние «Ожидание» и никогда не завершается.
Я предполагаю, что это какая-то проблема с разрешениями, но мне интересно, почему ошибок не появляется.
Некоторые шаги по отладке, которые я уже предпринял:
- Я проверил, нет ли в пути пробелов (если они есть, метод отклонит операцию и уведомит пользователя)
- Я распечатал регистрирует точную команду, которая используется для открытия файлов, и может подтвердить наличие «C:/Windows/explorer.exe».
Вывод: , Выход UTF8: , Значение выхода: 1
ОТВЕТ: Папки не было открытие, поскольку файл JAR находился в каталоге C:\Program Files, в котором применена защита, останавливающая запуск внешних процессов (например, открытие новых папок, создание новых файлов и т. д.)
Подробнее здесь: https://stackoverflow.com/questions/787 ... o-by-a-jar