在运行时指定java属性路径的路径

时间:2013-06-24 16:52:46

标签: java python service properties subprocess

如果已经回复,我会提前道歉,但我找不到任何与此有关的内容。我有一个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文件(由超级微编译预编译),所以我无法控制java代码。似乎在“服务域”中运行的java文件要么尝试将.properties文件写入它没有写入权限的位置,要么/或找不到.properties文件。另外需要注意的是,jar和.properties文件都存在于同一目录中。似乎当jar文件在“服务域”中执行时,它可能实际上并未在jar文件所在的目录中执行。

当我调用java -jar时,是否可以显式指定.properties文件的路径?有没有办法以某种方式在JRE中设置.properies文件的默认路径?对于后续步骤我有点不知所措,谷歌没有帮助。任何帮助将不胜感激!

使用实际代码的复制粘贴进行编辑。 cmmTool变量包含/ path / to / jar / jarFile

1 个答案:

答案 0 :(得分:0)

解决。需要将我的服务运行路径更改为jar文件和.properties文件所在的位置。看来,当我之前启动jar文件时,它实际上是在与文件所在位置不同的位置执行的。因此,它无法在同一目录中找到.properties文件。这是我的/etc/init/myservice.conf的样子(无论如何重要的部分...... .conf的早期部分有一些我不应该分享的东西):

chdir /svbase/
expect fork

script
    exec /usr/bin/python /svbase/smapp/Main.py /svbase/config/product/smapp.xml &
end script

第一行是将服务的运行位置更改为jar文件和.properties文件所在位置所必需的。