【发布时间】:2013-06-24 16:52:45
【问题描述】:
如果这个问题已经得到解答,我提前道歉,但我找不到任何与此相关的具体内容。我有一个 python 程序,它在运行时启动一个子进程,它调用一个 java jar 文件。该命令如下所示:
# 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 文件(由 super micro 预编译),所以我无法控制 java 代码。似乎在“服务区”中运行的 java 文件正在尝试将 .properties 文件写入它没有写入权限的位置,和/或找不到 .properties 文件。还要注意,jar 和 .properties 文件都存在于同一目录中。似乎当 jar 文件在“服务域”中执行时,它实际上可能并未在 jar 文件所在的目录中执行。
当我调用 java -jar 时,是否可以明确指定 .properties 文件的路径?有没有办法以某种方式在 JRE 中设置 .properies 文件的默认路径?我对接下来的步骤有点不知所措,谷歌也没有帮助。任何帮助将不胜感激!
使用实际代码的复制粘贴进行编辑。 cmmTool 变量包含 /path/to/jar/jarFile
【问题讨论】:
-
我假设您只是忘记了
expr="..."周围的引号,是吗? -
您可以尝试使用
"SMCIPMITool.jar"而不是'/path/to/jar/'并调用subprocess.Popen(expr, cwd='/path/to/jar', shell=True),这可能会影响服务创建或写入文件的位置。 -
啊,是的,对不起,我为这个问题即时重写了我的 python 代码。 python代码工作正常。正如我所说,我已经多次运行它从命令行启动它而没有问题。我会尝试你推荐的 cwd 并报告。
-
然后粘贴工作 python 代码。 SO用户一般都很熟练,你不会用伪代码欺骗他们:p
-
已更新以摆脱“伪代码”,我认为这可能更清楚。 Ryan 使用 cwd='path/to/jar' 的建议没有奏效。同样的错误。
标签: java python service properties subprocess