2016-05-29 43 views
0

私はPython経由で実行する必要がある.jarファイルを持っています。Pythonを使用して.jarファイルを実行しようとしています

私の現在のコードは

import subprocess 
subprocess.check_output(['java', '-jar', 'StatsCalc.jar']) 

である私は、エラー・メッセージをプリントアウト:

Traceback (most recent call last): 
File "C:\Users\ali\Documents\Java Stuff\RedditFitnessCalc\out\artifacts\RedditFitnessCalc_jar\pythonBotScript.py", line 6, in <module> 
p = subprocess.check_output(['java', '-jar', 'RedditFitnessCalc.jar']) 
File "C:\Program Files (x86)\Python 3\lib\subprocess.py", line 620, in check_output 
raise CalledProcessError(retcode, process.args, output=output) 
subprocess.CalledProcessError: Command '['java', '-jar', 'RedditFitnessCalc.jar']' returned non-zero exit status 2 

を、私はそれを実行すると、ウィンドウがポップアップし、瞬時に消えます。これは、GUIを持つJavaプログラムです。私はそれをバッチファイルで直接実行してみましたが、どちらもうまく動作します。それはシェル(バッチファイルまたはコマンドプロンプト)だから、

で行われていたかのように頻繁にサブプロセスにshell=Trueオプションを使用している作品

+1

'call'の代わりに' check_output'を使って試してみてください。 – domoarrigato

+0

私はあなたがhttp://stackoverflow.com/questions/7372592/python-how-can-execute-a-jar-file-through-a-python-scriptとそれがリンクしている3つの他の質問を見てきたと仮定しています。 –

+0

@ TadhgMcDonald-Jensenはい、私はやりましたが、私はすべてのソリューションを試しましたが、役に立たなかった。重複しているように見えますが、エラーを含めるように編集しました。 – RedCardOP

答えて

1

ことの一つは、これは使用してコマンドを実行します。

import subprocess 
subprocess.call(['java', '-jar', 'StatsCalc.jar'],shell=True) 

あなたのために働くべきですが、あまりにもこれに頼る前にSecurity Considerations section of the subprocess's documentationをお読みください。

あなたはshell=True

import subprocess 
subprocess.call(['path/to/java', '-jar', 'StatsCalc.jar']) 
を使用することが好ましい java実行ファイルのフルパスを知っているので、もしそれが、完全なパスを使用せずに、コマンド javaを見つけることができないので、通常、それはシェルなしで動作しない理由は、

私はこれらの2つの違いに関する正確な内容は分かりませんが、

関連する問題