将错误子进程放入jar文件

时间:2019-06-14 12:45:18

标签: python

我尝试使用 python(Django)中的文件 JAR 对文件xml进行签名 为此,我使用下一个代码:

PATH_FIRMA_ABSOLUTA = os.path.join(os.path.dirname(os.path.dirname(__file__)),'static/SRI/betty_elena_romo_vega.p12')


PATH_FIRMAR_JAVA = os.path.join(os.path.dirname(os.path.dirname(__file__)),'static/SRI/firmaXadesBes.jar')

file_pk12 = PATH_FIRMA_ABSOLUTA
password = 'Rgberv1792'
JAR_PATH = PATH_FIRMAR_JAVA
JAVA_CMD = 'java'
ds_document = False
#xml_str = "<?xml version='1.0' encoding='UTF-8' standalone='yes'?>"
PATH_XML_ABSOLUTO =  os.path.join(os.path.dirname(os.path.dirname(__file__)),path_xml_generado)
tree = etree.parse(str(PATH_XML_ABSOLUTO))
xml_str = etree.tostring(tree, encoding='utf8', method='xml')

command = [
    JAVA_CMD,
    '-jar',
    JAR_PATH,
    xml_str,
    base64.b64encode(file_pk12),
    base64.b64encode(password)
]

p = subprocess.Popen(
    command,
    stdout=subprocess.PIPE,
    stderr=subprocess.STDOUT,
    shell=True
)
res = p.communicate()

我收到此错误:

Usage: java [-options] class [args...] (to execute a class)
or  java [-options] -jar jarfile [args...] (to execute a jar file)
where options include:
-d32\t  use a 32-bit data model if available
-d64\t  use a 64-bit data model if available
..
.

当我尝试打印时显示错误:

 doc_signed = res[0]
print doc_signed

在这种情况下,JAR文件返回带有符号include的字符串xml,但返回时不会返回错误。

感谢任何建议。

1 个答案:

答案 0 :(得分:0)

您必须首先安装32位SDK或JRE,然后在32位版本之上选择并安装64位软件包。这可能意味着只有一个入口点,然后通过-d32 / -d64完成选择。

相关问题