2017-08-17 1 views
0

は私がすなわち構造以下、私のXSDスキーマファイルを提供しています失敗しますそれ。ロードXSDスキーマは、私のjarファイル内の

私は次のようにするSchemaFactoryにXSDスキーマを追加してい:

public void loadXSDSchema() throws InitializationException { 
    SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
    try { 
     xsdSchema = sf.newSchema(new File(getClass().getClassLoader().getResource(XSD_SCHEMA_FILE).getFile())); 
    } catch (SAXException e) { 
     throw new InitializationException(ApiExceptionId.INIT_XSD_SCHEMA, e); 
    } 

を残念ながら、それは生産JARファイルで作業されていない - 私はFileNotFoundExceptionを取得しています:

Caused by: java.io.FileNotFoundException: D:\dev\myjar.jar!\myschema.xsd (Die Syntax f▒r den Dateinamen, Verzeichnisnamen oder die Datentr▒gerbezeichnung ist falsch) 

Iを私はそれがリソースとしてそれを読む必要があることを知っていたと思ったが、それは瓶の中にパッケージ化されているが、現実には私は何か間違っているようだ。

私が紛失していることに関するヒント?

答えて

1

ファイルではないため、ファイルとして取得することはできません。 jarファイルのエントリです。ファイルはオペレーティングシステムオブジェクトであり、OSの観点からはjarファイルがファイルです。あなたはをClassLoader経由で得ることができますが、あなたはこのInputStreamを介して内容を読むことができます。

Schema xsdSchema = sf.newSchema(new StreamSource(ClassLoader.getSystemResourceAsStream("shema.xsd"))); 
+0

これでわかりました。私はリソースについてのことしか知りませんでしたが、それは感謝しています。 – Stefan

関連する問題