如果已經得到回答,我很抱歉,但我無法找到與此相關的任何內容。我有一個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