我不在网上时会遇到这种错误:
org.xml.sax.SAXParseException; lineNumber: 55; columnNumber: 33; schema_reference.4: Failed to read schema document 'http://www.hazelcast.com/schema/spring/hazelcast-spring-2.1.xsd',
because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.
Caused by: java.net.ConnectException: Connection timed out: connect
...no declaration can be found for element 'hz:hazelcast'.
解决方案是什么,因此无需每次都连接到互联网。
答案 0 :(得分:3)
您没有在问题中准确地说明您是如何加载需要此架构的XML文件的,但是通过它的名称,它似乎与Spring bean配置有关。 Spring有一个组件机制,它们提供自己的模式将这些模式捆绑在JAR文件中,这样就不必从互联网上获取它们。这涉及JAR文件中名为java.util.Properties
的{{1}}格式文件,其中包含将http URL映射到本地路径(在JAR文件中)的行,例如
META-INF/spring.schemas
(来自http\://www.hazelcast.com/schema/spring/hazelcast-spring-2.1.xsd=hazelcast-spring-2.1.xsd
)。
所以我怀疑这里发生的事情是你指的是与你实际使用的hazelcast版本不同的架构版本,这意味着你请求的架构没有在hazelcast-spring-2.1.3.jar
目录中列出因此它必须上网下载它。例如,如果您有spring.schemas
,那么您需要在hazelcast-spring-2.5.jar
中使用匹配的http://www.hazelcast.com/schema/spring/hazelcast-spring-2.5.xsd
。
答案 1 :(得分:1)
下载xsd并将其保存在您的项目中。使用以下代码访问xsd
JAXBContext context = JAXBContext.newInstance(<your>.class);
Unmarshaller jaxbUnMarshaller = context.createUnmarshaller();
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
URL tmpurl = getClass().getClassLoader().getResource("file.xsd");
Schema s = schemaFactory.newSchema(tmpurl);
jaxbUnMarshaller.setSchema(s);
答案 2 :(得分:0)
将该XSD复制到WEB-INF /并在XML文件中将uri作为 / WEB-INF / xsdname .xsd 。您正在使用架构。