0

オンラインでない場合、通常、この種のエラーが発生します。

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'.

毎回これだけのためにインターネットに接続する必要がないようにするための解決策は何ですか。

4

3 に答える 3

3

あなたの質問では、このスキーマを必要とする XML ファイルをどのようにロードしているのか正確には述べていませんが、その名前からすると、Spring Bean 構成と関係があるように見えます。Spring には、独自のスキーマを提供するコンポーネントがこれらを JAR ファイル内にバンドルするメカニズムがあるため、インターネットから取得する必要はありません。これには、JAR ファイルでjava.util.Properties指定されたフォーマット ファイルMETA-INF/spring.schemasが含まれます。このファイルには、http URL をローカル パス (JAR ファイル内) にマップする行が含まれます。たとえば、

http\://www.hazelcast.com/schema/spring/hazelcast-spring-2.1.xsd=hazelcast-spring-2.1.xsd

(からhazelcast-spring-2.1.3.jar)。

したがって、ここで起こっていることは、実際に使用している hazelcast のバージョンとは異なるスキーマ バージョンを参照していることだと思います。つまり、要求したスキーマがspring.schemasカタログにリストされていないため、それをダウンロードするインターネット。たとえば、持っている場合は、でマッチングをhazelcast-spring-2.5.jar使用する必要があります。http://www.hazelcast.com/schema/spring/hazelcast-spring-2.5.xsdxsi:schemaLocation

于 2013-02-15T13:42:47.917 に答える
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);
于 2013-02-15T09:21:59.247 に答える
0

その XSD を WEB-INF/ にコピーし、スキーマを使用している XML ファイルでURI を/WEB-INF/ xsdname .xsdとして指定します。

于 2013-02-15T13:28:26.927 に答える