У меня есть пакетный скрипт, который открывает файл Java .jar. Когда я дважды щелкаю файл .bat, он нормально открывает .jar.
Код .bat:
Код: Выделить всё
start javaw -Djava.library.path="%~dp0bin" -jar bin\SoarJavaDebugger.jar %1 %2 %3 %4 %5
"Windows не может найти Javaw".
и сообщение терминала с тем же эффектом.
(Я хочу запустить этот скрипт из Python, поэтому я можно запустить файл Jar, используя другую работу по настройке, которую выполняет файл .bat. Однако я показываю здесь только соответствующую часть файла .bat. Я тестировал удаление всего остального из файла .bat, и это не влияет на эту проблему. .)
РЕДАКТИРОВАТЬ: Зачем вообще использовать файл .bat? Я не писал этот файл .bat; он привязан к пакету программного обеспечения, который я вызываю с помощью моего сценария Python, и я бы предпочел не дублировать все, что он делает в моем сценарии, если это возможно, и не обходить обычную цепочку обработки вызываемого программного обеспечения.
The Twist
Обычно я думаю, что эта ошибка означает, что моя папка Java bin не находится в моей переменной среды %PATH%, но я дважды проверил, что это так, и то, и другое. в моей среде Python (используя echo $env:PATH в моем терминале VSCode), а также в среде файлов .bat (используя echo %PATH% прямо перед запуском javaw, а также с помощью используя os.system("echo %PATH%") в моем скрипте Python прямо перед вызовом os.system(BAT_PATH)). Путь к папке Java bin успешно распечатывается в каждом случае.
Мой путь к Java — C:\\Program Files\\Eclipse Adoptium\\jdk-21.0.2.13-hotspot\\bin< /code>, и я дважды проверил наличие файла javaw.exe.
Я пробовал использовать параметр /I в команде start, но без каких-либо разница.
Я попробовал заменить os.command(BAT_PATH) на subprocess.Popen(BAT_PATH, Shell=False), без каких-либо различий.
РЕДАКТИРОВАТЬ: Использование того места, где javaw возвращает ИНФОРМАЦИЯ: Не удалось найти файлы для данного шаблона(ов).
И написать javaw.exe с помощью расширение не имеет никакого значения в вышеизложенном.
Я использую рабочий компьютер с Windows, на котором установлено программное обеспечение корпоративной безопасности, которое я не могу настроить. (У меня нет учетной записи администратора.) Может ли система безопасности помешать моему компьютеру использовать PATH для поиска javaw, даже если путь указан в PATH?
Я не хочу использовать команду CALL, которая жестко запрограммирует путь к javaw.exe, поскольку я хочу, чтобы этот сценарий работал на нескольких машинах, где путь Java может различаться.
Опять же, двойной щелчок по файлу .bat работает нормально. При попытке запустить его из Python просто происходит сбой.
Почему он так себя ведет?
РЕДАКТИРОВАТЬ: частичное решение
Я могу запустить файл, заменив строку .bat на следующую:
Код: Выделить всё
start %~dp0bin\SoarJavaDebugger.jar %1 %2 %3 %4 %5
И еще мне хотелось бы знать, почему я получаю исходную ошибку.
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/786 ... os-command