これがすでに回答されている場合は事前にお詫び申し上げますが、これに特に関連するものは見つかりません。実行時にJava jarファイルを呼び出すサブプロセスを起動するpythonプログラムがあります。コマンドは次のようになります。
# 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 ファイルへのデフォルト パスを設定する方法はありますか? 私は次のステップに少し途方に暮れており、Google は役に立ちません。どんな助けでも大歓迎です!
実際のコードのコピペで編集。cmmTool 変数には /path/to/jar/jarFile が含まれます