java.util.InvalidPropertiesFormatException : SAXParseException

标签 java xml qpid

我正在尝试将 Apache Qpid 实现到我们的架构中,但在读取属性文件时遇到问题。

Properties props = new Properties(); props.loadFromXML(this.getClass().getResourceAsStream("hello.properties"));

loadfromxml 向我抛出一个错误,这是堆栈跟踪:

> java.util.InvalidPropertiesFormatException:
> org.xml.sax.SAXParseException: Content is not allowed in prolog.  at
> java.util.XMLUtils.load(XMLUtils.java:56)     at
> java.util.Properties.loadFromXML(Properties.java:852)     at
> com.irad.message.system.HelloTest.runTest(HelloTest.java:29)  at
> com.irad.message.system.HelloTest.main(HelloTest.java:23) Caused by:
> org.xml.sax.SAXParseException: Content is not allowed in prolog.  at
> com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
>   at
> com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174)
>   at
> com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388)
>   at
> com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1427)
>   at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1036)
>   at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)
>   at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
>   at
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
>   at
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
>   at
> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
>   at
> com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:232)
>   at
> com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
>   at java.util.XMLUtils.getLoadingDoc(XMLUtils.java:82)   at
> java.util.XMLUtils.load(XMLUtils.java:54)     ... 3 more

这是 hello.properties 文件:

java.naming.factory.initial=org.apache.qpid.jndi.PropertiesFileInitialContextFactory
connectionfactory.qpidConnectionfactory= amqp://guest:guest@clientid/test?brokerlist='tcp://localhost:5672'
destination.topicExchange = amq.topic

我做错了什么?我从 Qpid 的文档页面复制了代码片段。

最佳答案

您正在使用 Properties.loadFromXML 将文本文件加载为 XML,它告诉您提供的 XML 文件格式不正确。

下次当您遇到此类错误时,请在 google 上搜索“java loadfromxml”。它将带您查看有关如何使用它的 javadocs 手册,您将看到您提供的参数不正确:

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Properties.html#loadFromXML%28java.io.InputStream%29

上面的链接说:

XML 文档必须具有以下 DOCTYPE 声明:

<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">

将属性文件更改为正确的格式,然后您就可以找出下一个错误。

关于java.util.InvalidPropertiesFormatException : SAXParseException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13825464/

相关文章:

java - 使用 hashmap 读取 xls 文件

java - 如何让 Hazelcast 客户端等待服务器启动?

xml - 更改 XML 中所有属性的标签名称

spring - 在 Spring Integration 中设置消息的生存时间

java - 加载 J 连接器时出现问题

java - java中如何在字符串中填充空格?

xml - 在 Scala 中查找 XML 元素的第一个子元素

xml - XPath 查询精确匹配

java - 使用 QPID 0.32 客户端的 RabbitMQ 消息传递

java - 如何在使用 apache qpid 时处理 jms 消息传递中的生产者流控制