Python: как я могу выполнить файл jar через python script

Я искал ответ о том, как выполнить java файл jar через python и после просмотра:

Выполнить .jar из Python

Как я могу получить свой python (версия 2.5) script для запуска файла jar внутри папки вместо командной строки?

Как запускать файлы яиц Python напрямую, не устанавливая их?

Я попытался сделать следующее (оба файла jar и python находятся в одном каталоге):

import os

if __name__ == "__main__":
    os.system("java -jar Blender.jar")

и

import subprocess

subprocess.call(['(path)Blender.jar'])

Ничего не сработало. Итак, я думал, что я должен использовать Jython вместо этого, но я думаю, что должен быть более простой способ выполнить jar файлы через python.

Есть ли у вас идеи, что я могу сделать неправильно? Или, есть ли какой-нибудь другой сайт, на котором я больше разбираюсь в своей проблеме?

Ответы

Ответ 1

Я бы использовал подпроцесс следующим образом:

import subprocess
subprocess.call(['java', '-jar', 'Blender.jar'])

Но если у вас правильно настроенный /proc/sys/fs/binfmt_misc/jar, вы должны иметь возможность запускать банку напрямую, как вы писали.

Итак, какая именно ошибка вы получаете? Пожалуйста, разместите где-нибудь весь вывод, который вы получаете от неудавшегося выполнения.

Ответ 2

Это всегда работает для меня:

from subprocess import *

def jarWrapper(*args):
    process = Popen(['java', '-jar']+list(args), stdout=PIPE, stderr=PIPE)
    ret = []
    while process.poll() is None:
        line = process.stdout.readline()
        if line != '' and line.endswith('\n'):
            ret.append(line[:-1])
    stdout, stderr = process.communicate()
    ret += stdout.split('\n')
    if stderr != '':
        ret += stderr.split('\n')
    ret.remove('')
    return ret

args = ['myJarFile.jar', 'arg1', 'arg2', 'argN'] # Any number of args to be passed to the jar file

result = jarWrapper(*args)

print result