导出到.jar后无法解析内容(需要XML)

时间:2019-05-09 13:31:41

标签: java xml jar

在我的程序中,我从服务器下载一个XML文件作为String并使用证书对其进行签名。当我从Eclipse运行程序时,一切正常。但是,当我将其导出到.jar文件时,会发生以下错误。我应该在哪里寻找问题?

eu.europa.esig.dss.DSSException: Unable to parse content (XML expected)
    at eu.europa.esig.dss.DomUtils.buildDOM(DomUtils.java:242)
    at eu.europa.esig.dss.DomUtils.buildDOM(DomUtils.java:209)
    at eu.europa.esig.dss.xades.signature.EnvelopedSignatureBuilder.buildRootDocumentDom(EnvelopedSignatureBuilder.java:75)
    at eu.europa.esig.dss.xades.signature.XAdESSignatureBuilder.build(XAdESSignatureBuilder.java:179)
    at eu.europa.esig.dss.xades.signature.XAdESLevelBaselineB.getDataToSign(XAdESLevelBaselineB.java:72)
    at eu.europa.esig.dss.xades.signature.XAdESService.getDataToSign(XAdESService.java:92)
    at pl.btech.signer.Signer.signFilesWithMSCAPI(Signer.java:116)
    at pl.btech.signer.Signer.signXML(Signer.java:58)
    at pl.btech.signer.GuiController$1.run(GuiController.java:124)
Caused by: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.
    at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.skipChar(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
    at javax.xml.parsers.DocumentBuilder.parse(Unknown Source)
    at eu.europa.esig.dss.DomUtils.buildDOM(DomUtils.java:240)
    ... 8 more

编辑: 它是发生错误的代码片段。内容是我从表单服务器获取的XML字符串。

File srcFile = File.createTempFile("src", ".xml");
FileWriter writer = new FileWriter(srcFile);
writer.write(content);
writer.close();

DSSDocument doc = new FileDocument(srcFile));
ToBeSigned dataToSign = service.getDataToSign(doc, parameters);

1 个答案:

答案 0 :(得分:0)

impala-shell -B -q "select * from anylbi.tablename_1;" -o extract.csv --print_header '--output_delimiter=,' 使用平台的默认字符集。这因应用程序部署而异,因此不可行。如果XML始终为UTF-8,请执行以下操作:

FileWriter

避免使用FileWriter / FileReader。