2017-02-17 9 views
0

をメインクラスを見つけるか、ロードできませんでした:エラー:私はPythonでこのコマンドを実行しようとしていますpythonで

java JSHOP2.InternalDomain logistics 

私はCMDでそれを実行したときにそれはうまく動作します。

私はPythonでこれを書いた:

args = ['java', 
     r"-classpath", 
     r".;./JSHOP2.jar;./antlr.jar", 
     r"JSHOP2.InternalDomain", 
     thisDir+"/logistics" 
     ] 
    proc = subprocess.Popen(args, stdout=subprocess.PIPE) 
    proc.communicate() 

は、私は現在のディレクトリにjarファイルを持っています。

が、私はこのエラーを得た: エラー:検索またはロードできませんでしたメインクラスJSHOP2.InternalDomain

は、問題が何であるか、誰を知っていますか? jarファイルが見つかりませんか?

+1

はおそらく、プロセスの現在の作業ディレクトリ(popenの() ''に 'cwd'キーワード引数)を設定します。 –

+0

どうすればいいですか? – user1393201

+0

'cwd ='キーワード引数を '.'でクラスパスに表現するディレクトリに設定します。そうするか、クラスパス内の絶対パスを使用します。 –

答えて

0

Pythonコードを実行しているときに、現在の作業ディレクトリを常に同じにすることはできません。あなたの-classpathコマンドライン引数に絶対パスを使用し、また

proc = subprocess.Popen(args, stdout=subprocess.PIPE, 
         cwd='/directory/containing/jarfiles') 

:明示的cwd引数を使用して作業ディレクトリを設定します。そのパスがthisDirであれば、それを使用:

proc = subprocess.Popen(args, stdout=subprocess.PIPE, 
         cwd=thisDir) 
関連する問題