我尝试使用 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,但返回时不会返回错误。
感谢任何建议。
答案 0 :(得分:0)
您必须首先安装32位SDK或JRE,然后在32位版本之上选择并安装64位软件包。这可能意味着只有一个入口点,然后通过-d32 / -d64完成选择。