Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MalformedURLException:没有使用Xalan transformer的协议_Java_Xml_Xerces_Xalan - Fatal编程技术网

Java MalformedURLException:没有使用Xalan transformer的协议

Java MalformedURLException:没有使用Xalan transformer的协议,java,xml,xerces,xalan,Java,Xml,Xerces,Xalan,我无法在上实现此问题的解决方案。我有一个错误的想法:没有协议。XML文件编码为UTF-8,没有doctype,但格式良好。我不明白为什么会发生这种事 下面是有问题的代码(byteArray有xml,updateingXMLReader是我的类): 在我的测试中如何调用它: File file = new File("c:/test.xml"); InputStream input = new FileInputStream(file); byte[] b = IOUtil

我无法在上实现此问题的解决方案。我有一个错误的想法:没有协议。XML文件编码为UTF-8,没有doctype,但格式良好。我不明白为什么会发生这种事

下面是有问题的代码(
byteArray
有xml,
updateingXMLReader
是我的类):

在我的测试中如何调用它:

    File file = new File("c:/test.xml");
    InputStream input = new FileInputStream(file);
    byte[] b = IOUtils.toByteArray(input);
    // in production the byte array will come from the database
    service.method(b, httpServletResponse ,httpServletRequest)
这是stacktrace:

javax.xml.transform.TransformerException: 
    java.net.MalformedURLException: no protocol: 
    at org.apache.xalan.transformer.TransformerIdentityImpl.transform(Unknown Source)
Caused by: java.net.MalformedURLException: no protocol: [B@22732273
    at java.net.URL.<init>(URL.java:579)
    at java.net.URL.<init>(URL.java:476)
    at java.net.URL.<init>(URL.java:425)
    at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
    at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
javax.xml.transform.TransformerException:
java.net.MalformedURLException:无协议:
位于org.apache.xalan.transformer.TransformerIdentityImpl.transform(未知源)
原因:java.net.MalformedURLException:无协议:[B@22732273
位于java.net.URL。(URL.java:579)
在java.net.URL.(URL.java:476)
位于java.net.URL。(URL.java:425)
位于org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(未知源)
位于org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(未知源)
位于org.apache.xerces.parsers.XML11Configuration.parse(未知源)
位于org.apache.xerces.parsers.XML11Configuration.parse(未知源)
位于org.apache.xerces.parsers.XMLParser.parse(未知源)
位于org.apache.xerces.parsers.AbstractSAXParser.parse(未知源)
位于org.apache.xerces.jaxp.SAXParserImpl$jaxpsaxpasser.parse(未知源代码)
位于org.apache.xerces.jaxp.SAXParserImpl.parse(未知源)

尝试将“file://”附加到文件路径的开头。

例外情况是,有东西向XML实体管理器提供了一个字符串,该字符串应该是绝对URL…但不是。它表示URL没有“协议”;例如,中冒号前的位http://example.com”“或者“邮寄:me@example.com“

此外,嵌套的异常消息似乎表示它试图解析的假定url是
”[B@22732273“
。这是一条重要线索,因为如果在
字节[]
对象上调用
toString
,就会得到这个线索


因此,我的初步诊断是,您没有向我们展示的一些代码正在传递一个字节数组,实际上它应该传递一个将作为URL字符串解析的对象。

测试中的b是第一个代码段中的byteArray。我更改了测试,以便它将FileInputStream传递到InputReader,而不是使用commons在应用程序中,当传递从字节[]创建的ByteArrayInputStream时,它就起作用了。所以我还是不明白。
javax.xml.transform.TransformerException: 
    java.net.MalformedURLException: no protocol: 
    at org.apache.xalan.transformer.TransformerIdentityImpl.transform(Unknown Source)
Caused by: java.net.MalformedURLException: no protocol: [B@22732273
    at java.net.URL.<init>(URL.java:579)
    at java.net.URL.<init>(URL.java:476)
    at java.net.URL.<init>(URL.java:425)
    at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
    at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)