2017-07-31 91 views
0

我的Java JAR在Linux命令行中執行得很好,我希望通過python腳本執行它。使用Popen執行Java JAR:無法找到或加載主類JAR

我想Popen當出現以下錯誤:

Error: Could not find or load main class jar 

任何想法?

什麼我迄今爲止嘗試:JAR文件的

  1. 命令行執行。經過。
  2. Popen用簡單的java-version。檢查。
  3. 更新cwd。經過。

工作Java調用:

>>> javaCall = subprocess.Popen(['java', '-version'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 

失敗的命令:

>>> javaCall = subprocess.Popen(['java', 'jar' , 
'abs/path/to/jar/abc.jar', 
'arg 1', 'arg 2', 'arg 3'], cwd = 
'/abs/path/where/jar and python files live', stdin=subprocess.PIPE, 
stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
>>> output, err = javaCall.communicate() 
>>> print err 
Error: Could not find or load main class jar 

我錯過任何指針?

+0

添加 - 在罐的前'[ '的java', '-jar']' – drelliot

+0

@drelliot。哈哈,很好。它做到了。請把它放在答案中,我會標記它。 –

+0

不用擔心!樂於幫助 – drelliot

回答

1

缺少一個 - 在罐的前

javaCall = subprocess.Popen(['java', 'jar' , 
'abs/path/to/jar/abc.jar', 
'arg 1', 'arg 2', 'arg 3'], cwd = 
'/abs/path/where/jar and python files live', stdin=subprocess.PIPE, 
stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
>>> output, err = javaCall.communicate() 
>>> print err 
Error: Could not find or load main class jar 

更改爲:javaCall = subprocess.Popen(['java', '-jar' , ~~~

相關問題