2016-06-29 8 views
1
File schemaLocation = new File("/home/localpc/servletaddequi/src/main/resources/BackupSample/DEMO.xsd") 

上記のようにファイルパスを渡すとファイルを取得できます。 しかし、私はプロジェクトからファイルのパスを渡したいだけです、どのように私はファイルのパスを渡すことができますか?私は以下のようにファイルパスを渡すと:この記事からの回答を参照してくださいJavaトランスのファイルパスをプロジェクトからサーブレットを使ってmule esb

Failed to read schema document 'file:/BackupSample/DEMO.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>. 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198) 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:347) 
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaErr(XSDHandler.java:4166) 
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaError(XSDHandler.java:4149) 
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.getSchemaDocument1(XSDHandler.java:2479) 
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.getSchemaDocument(XSDHandler.java:2187) 
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.parseSchema(XSDHandler.java:573) 
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadSchema(XMLSchemaLoader.java:617) 
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:575) 
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:541) 
    at com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory.newSchema(XMLSchemaFactory.java:252) 
    at javax.xml.validation.SchemaFactory.newSchema(SchemaFactory.java:627) 
    at javax.xml.validation.SchemaFactory.newSchema(SchemaFactory.java:643) 
    at com.test.Test.transformMessage(Test.java:38) 
    at org.mule.transformer.AbstractMessageTransformer.transform(AbstractMessageTransformer.java:141) 
    at org.mule.transformer.AbstractMessageTransformer.transform(AbstractMessageTransformer.java:89) 
    at org.mule.DefaultMuleMessage.transformMessage(DefaultMuleMessage.java:1602) 
    at org.mule.DefaultMuleMessage.applyAllTransformers(DefaultMuleMessage.java:1509) 

Caused by: java.io.FileNotFoundException: /BackupSample/DEMO.xsd (No such file or directory) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(FileInputStream.java:146) 
    at java.io.FileInputStream.<init>(FileInputStream.java:101) 
    at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90) 
    at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188) 
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:619) 
    at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:189) 
    at com.sun.org.apache.xerces.internal.impl.xs.opti.SchemaParsingConfig.parse(SchemaParsingConfig.java:582) 
    at com.sun.org.apache.xerces.internal.impl.xs.opti.SchemaParsingConfig.parse(SchemaParsingConfig.java:685) 
    at com.sun.org.apache.xerces.internal.impl.xs.opti.SchemaDOMParser.parse(SchemaDOMParser.java:530) 
    at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.getSchemaDocument(XSDHandler.java:2175) 
    ... 218 more 
+0

はあなたflow.xmlを追加することができます。なぜあなたはJavaトランスフォーマ内のファイルを使用する必要がありますか?私はその理由のためにちょっと混乱している。 –

答えて

0

mule read single file from classpath during flow、あなたがThread.currentThread().getContextClassLoader().getResource("filename.xsd")を使用することができます

File schemaLocation = new File("/foldername/filename.xsd"); 

それはように、エラーが発生しURLクラスを取得します。

は、したがって、あなたは、次のコードを試すことができます。

URL url = Thread.currentThread().getContextClassLoader().getResource("filename.xsd"); 
File schemaLocation = new File(url.getFile()); 
関連する問題