如果这个问题已经得到解答,我提前道歉,但我找不到任何与此相关的具体内容。我有一个 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