如果已经得到回答,我很抱歉,但我无法找到与此相关的任何内容。我有一个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文件将在jar文件的同一路径中创建一个SMCIPMITool.properties。我的问题是,我想运行我的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)
请记住,这不是(由超微预编译)我的jar文件,所以我必须在Java代码无法控制。看起来,运行在“service land”中的java文件要么尝试将.properties文件写入到它没有写权限的位置,和/或找不到.properties文件。另外需要注意的是,jar和.properties文件都存在于同一个目录中。看起来,当jar文件在“service land”中执行时,它可能实际上并未在jar文件所在的目录中执行。
当我调用java -jar时,是否可以明确指定.properties文件的路径?有没有办法在JRE中设置默认路径为.properies文件?我在接下来的步骤中有点不知所措,而谷歌没有帮助。任何帮助将不胜感激!
使用实际代码的复制粘贴编辑。 cmmTool变量包含/ path/to/jar/jar文件
我假设你只是忘记了'expr =“...”'引号',是吗? –
您可以尝试使用''SMCIPMITool.jar“'而不是'/ path/to/jar /''并调用'subprocess.Popen(expr,cwd ='/ path/to/jar',shell = True) '它可能会影响服务创建或写入文件的位置。 –
啊,是的,对不起,我为这个问题重写了我的python代码。 Python代码工作正常。正如我所说,我已经多次运行它从命令行启动它没有问题。我会尝试你的cwd建议并回报。 – user1777820