2013-06-23 21 views
6

Voglio creare un programma in grado di eseguire file jar e stampare qualsiasi cosa stia facendo il file jar nel mio programma python ma senza utilizzare la riga di comando di Windows, ho cercato su tutto il web ma non sta arrivando nulla su come fare questo.Esecuzione di file Jar da Python

Il mio programma è un wrapper server Minecraft e voglio che esegua il file server.jar e invece di eseguirlo all'interno del prompt dei comandi di Windows, voglio che venga eseguito all'interno della shell Python.

Qualche idea?

+0

Ciao Daniel, qual è lo scopo di voler ascoltare su quali altre applicazioni stanno facendo? Sono i log che vuoi ascoltare o qualcos'altro? Traffico di rete? Qualcos'altro? Si prega di fornire ulteriori dettagli per dipingere un'immagine sana del problema. Spero che questo ti aiuti! – jmort253

+1

Ora ci sono altre informazioni, Hope che aiuta a spiegare cosa sto facendo. – Elxafil

risposta

7

Prima di eseguire il programma. Una pratica funzione per farlo:

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

Restituirà un iterabile con tutte le linee di uscita.
E si può accedere alle linee e di stampa utilizzando

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

add anche import subprocess, come run_command usa subprocess.

+0

Viene visualizzato un errore che dice b'Errore: Impossibile trovare o caricare la classe principale craftbukkit.jar \ r \ n ', quindi cosa devo fare. – Elxafil

+0

Il tuo codice Java funziona correttamente? Intendo indipendentemente? – svineet

+0

l'output è originario di jvm, quindi suppongo che il tuo codice java abbia qualche bug. – svineet