2013-06-23 231 views
6

我想製作一個程序,它可以執行jar文件並打印我的python程序中的任何jar文件,但不使用windows命令行,我搜索了所有網頁,但沒有任何內容與如何做到這一點。從Python運行Jar文件

我的程序是一個Minecraft服務器包裝,我希望它運行server.jar文件,而不是在windows命令提示符下運行它,我希望它在Python shell內運行。

任何想法?

+0

嗨丹尼爾,想要聽取其他應用程序正在做什麼的目的是什麼?它是你想聽的日誌還是其他的東西?網絡流量?還有別的嗎?請提供一些更詳細的信息,以便爲您的問題繪製健康的照片。希望這可以幫助! – jmort253

+1

現在有一些更多的信息,希望有助於解釋我在做什麼。 – Elxafil

回答

7

首先你必須執行程序。一個方便的功能:

def run_command(command): 
    p = subprocess.Popen(command, 
        stdout=subprocess.PIPE, 
        stderr=subprocess.STDOUT) 
    return iter(p.stdout.readline, b'') 

它會返回一個帶有所有輸出行的迭代器。
你可以使用

for output_line in run_command('java -jar jarfile.jar'): 
    print(output_line) 

插件也import subprocess訪問線和打印,爲run_command使用subprocess

+0

我收到一個錯誤,說b'Error:無法找到或加載主類craftbukkit.jar \ r \ n',那麼我該怎麼做。 – Elxafil

+0

你的java代碼工作正常嗎?我的意思是獨立? – svineet

+0

輸出最初來自jvm,所以我想你的java代碼有一些錯誤。 – svineet