Я заранее извиняюсь, если об этом уже был дан ответ, но я не могу найти что-либо, что конкретно связано с этим. У меня есть программа python, которая запускает подпроцесс во время выполнения, который вызывает java-файл jar. Команда выглядит так:Укажите путь к пути свойств java во время выполнения
# Build command line expression.
expr = self.cmmTool + " " + self.cmmIpAddress + " " + self.cmmUsername + " " + self.cmmPassword + " " + cmd + " > " + self.cmmOutputFile
# Execute command line expression.
p = subprocess.Popen(expr, shell=True)
Если я запускаю свою программу python из командной строки, все хорошо. Важно отметить, что файл jar будет создавать SMCIPMITool.properties по тому же пути, что и файл jar. Моя проблема в том, что я хочу запустить свою программу python в качестве службы. Когда я запускаю службу, программа python выполняет отлично, но имеет проблемы с этим вызовом. Моя программа python ловит это, и программа не сбой, поэтому она будет пытаться выполнить это несколько раз. Выход из файла Java переходит в файл, указанный выше и выглядит следующим образом:
java.io.FileNotFoundException: ./SMCIPMITool.properties (Permission denied)
java.io.FileNotFoundException: ./SMCIPMITool.properties (No such file or directory)
java.io.FileNotFoundException: ./SMCIPMITool.properties (Permission denied)
java.io.FileNotFoundException: ./SMCIPMITool.properties (No such file or directory)
java.io.FileNotFoundException: ./SMCIPMITool.properties (No such file or directory)
java.io.FileNotFoundException: ./SMCIPMITool.properties (No such file or directory)
java.io.FileNotFoundException: ./SMCIPMITool.properties (Permission denied)
java.io.FileNotFoundException: ./SMCIPMITool.properties (Permission denied)
java.io.FileNotFoundException: ./SMCIPMITool.properties (No such file or directory)
Имейте в виду, что это не мой файл банка (прекомпилирована по супер микро), поэтому я не имею никакого контроля над кодом Java , Кажется, что java-файл, работающий на «служебной земле», либо пытается записать файл .properties в том месте, на котором у него нет доступа на запись, и/или не может найти файл .properties. Также следует отметить, что файл jar и .properties существуют в одном каталоге. Кажется, что когда файл jar выполняется на «служебной земле», это, пожалуй, не выполняется в каталоге, где находится файл jar.
Можно ли указать путь к файлу .properties явно, когда я вызываю java -jar? Есть ли способ установить путь по умолчанию к файлам .properies в JRE каким-то образом? Я немного не понимаю, что делать дальше, и Google не помогает. Любая помощь будет принята с благодарностью!
Отредактировано с копией пасты фактического кода. Переменная cmmTool содержит/path/to/jar/jarFile
Я предполагаю, что вы просто забыли цитаты вокруг вашего 'expr =" ... "', да? –
Вы можете попробовать использовать '' SMCIPMITool.jar'' вместо ''/path/to/jar /'' и вызывать 'subprocess.Popen (expr, cwd = '/ path/to/jar', shell = True) 'и это может повлиять на местоположение, которое служба создает или записывает файл. –
Ах да, извините, я переписал свой код на Python на лету для этого вопроса. Код python отлично работает. Как я уже сказал, я запускал его много раз, запуская его из командной строки без проблем. Я попробую вашу рекомендацию cdd и отчитаюсь. – user1777820