尝试读取xsd时出现SAXParserException

尝试读取xsd时出现SAXParserException,xsd,xml-parsing,saxparser,Xsd,Xml Parsing,Saxparser,我的项目有一个JAXWS类,在该类中读取XSD并最终在另一个方法中进行验证 下面是他们读取XSD的java代码 private static final ThreadLocal <DocumentBuilder> parser = new ThreadLocal <DocumentBuilder> () { @Override protected DocumentBuilder initialValue() {

我的项目有一个JAXWS类,在该类中读取XSD并最终在另一个方法中进行验证

下面是他们读取XSD的java代码

private static final ThreadLocal <DocumentBuilder> parser =
            new ThreadLocal <DocumentBuilder> () {
                   @Override protected DocumentBuilder initialValue() {
                             DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
                             SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
                             // loading Schema file
                             //System.out.println("Hi .. am in parser");
                              DocumentBuilder parserBuilder = null;
                              if(finalXsd !=null){
                                logger.info("finalXsd FILE"+finalXsd);                          
                                Source schemaFile = new StreamSource(new File(finalXsd));

                                try{
                                    logger.info ("place-0") ;
                                    Schema schema = factory.newSchema(schemaFile);
                                    logger.info ("place-1") ;
                                    docBuilderFactory.setValidating(false); // true is used for DTD based validation, for schema validation set to false
                                    logger.info ("place-2") ;
                                    docBuilderFactory.setSchema(schema);
                                    logger.info ("place-3") ;
                                    parserBuilder = docBuilderFactory.newDocumentBuilder();
                                    logger.info ("place-4") ;
                                    parserBuilder.setErrorHandler( new JythonResponseErrorHandler() );
                                    logger.info ("place-5") ;
                                }catch(SAXException s)                          
                                {   
                                    logger.error("SAXException in ThreadLocal.");
                                    s.printStackTrace() ;
                                    return null;
                                } catch (ParserConfigurationException e) {                              
                                    e.printStackTrace();
                                    logger.error("ParserConfigurationException in ThreadLocal.");
                                    return null;
                                }


                            }
                            return parserBuilder;

                   }
          };
private静态最终线程本地解析器=
新线程本地(){
@重写受保护的DocumentBuilder初始值(){
DocumentBuilderFactory docBuilderFactory=DocumentBuilderFactory.newInstance();
SchemaFactory factory=SchemaFactory.newInstance(xmlstants.W3C\u XML\u SCHEMA\u NS\u URI);
//加载模式文件
//System.out.println(“解析器中的Hi..am”);
DocumentBuilder parserBuilder=null;
如果(finalXsd!=null){
logger.info(“finalXsd文件”+finalXsd);
Source schemaFile=newstreamsource(新文件(finalXsd));
试一试{
logger.info(“位置-0”);
Schema=factory.newSchema(schemaFile);
logger.info(“位置1”);
docBuilderFactory.setValidating(false);//true用于基于DTD的验证,架构验证设置为false
logger.info(“位置2”);
docBuilderFactory.setSchema(模式);
logger.info(“place-3”);
parserBuilder=docBuilderFactory.newDocumentBuilder();
logger.info(“place-4”);
setErrorHandler(新的JythonResponseErrorHandler());
logger.info(“place-5”);
}捕获(SAXS异常)
{   
logger.error(“ThreadLocal中的SAXException”);
s、 printStackTrace();
返回null;
}捕获(ParserConfiguration异常e){
e、 printStackTrace();
错误(“ThreadLocal中的ParserConfiguration异常”);
返回null;
}
}
返回parserBuilder;
}
};
XSD文件(上面的代码试图读取该文件):


在从SOAP-UI发送响应时,执行上述代码并抛出以下异常

org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document 'file:/D:/softwares/jboss-5.1.0.GA/server/default/deploy/poctest.war/WEB-INF/classes/final.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 org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
     at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
     at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
     at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
     at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
     at org.apache.xerces.impl.xs.traversers.XSDHandler.reportSchemaError(Unknown Source)
     at org.apache.xerces.impl.xs.traversers.XSDHandler.getSchemaDocument(Unknown Source)
     at org.apache.xerces.impl.xs.traversers.XSDHandler.parseSchema(Unknown Source)
     at org.apache.xerces.impl.xs.XMLSchemaLoader.loadSchema(Unknown Source)
     at org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar(Unknown Source)
     at org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar(Unknown Source)
     at org.apache.xerces.jaxp.validation.XMLSchemaFactory.newSchema(Unknown Source)
     at javax.xml.validation.SchemaFactory.newSchema(SchemaFactory.java:594)
     at com.hmco.ssms.services.poc.SoarPocJaxWS$1.initialValue(SoarPocJaxWS.java:59)
     at com.hmco.ssms.services.poc.SoarPocJaxWS$1.initialValue(SoarPocJaxWS.java:46)
     at java.lang.ThreadLocal.setInitialValue(ThreadLocal.java:141)
     at java.lang.ThreadLocal.get(ThreadLocal.java:131)
     at com.hmco.ssms.services.poc.SoarPocJaxWS.getParametersMultiple(SoarPocJaxWS.java:144)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     at java.lang.reflect.Method.invoke(Method.java:597)
     at org.jboss.wsf.container.jboss50.invocation.InvocationHandlerJSE.invoke(InvocationHandlerJSE.java:108)
     at org.jboss.ws.core.server.ServiceEndpointInvoker.invoke(ServiceEndpointInvoker.java:222)
     at org.jboss.wsf.stack.jbws.RequestHandlerImpl.processRequest(RequestHandlerImpl.java:474)
     at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleRequest(RequestHandlerImpl.java:295)
     at org.jboss.wsf.stack.jbws.RequestHandlerImpl.doPost(RequestHandlerImpl.java:205)
     at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:131)
     at org.jboss.wsf.common.servlet.AbstractEndpointServlet.service(AbstractEndpointServlet.java:85)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
     at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
     at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
     at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
     at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
     at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
     at java.lang.Thread.run(Thread.java:662)
org.xml.sax.SAXParseException:schema_reference.4:未能读取模式文档文件:/D:/softwares/jboss-5.1.0.GA/server/default/deploy/poctest.war/WEB-INF/classes/final.xsd',因为1)找不到文档;2) 文件无法读取;3) 文档的根元素不是。
位于org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(未知源)
位于org.apache.xerces.util.ErrorHandlerWrapper.error(未知源)
位于org.apache.xerces.impl.XMLErrorReporter.reportError(未知源)
位于org.apache.xerces.impl.XMLErrorReporter.reportError(未知源)
位于org.apache.xerces.impl.XMLErrorReporter.reportError(未知源)
位于org.apache.xerces.impl.xs.traversers.XSDHandler.reportSchemaError(未知源)
位于org.apache.xerces.impl.xs.traversers.XSDHandler.getSchemaDocument(未知源)
位于org.apache.xerces.impl.xs.traversers.XSDHandler.parseSchema(未知源)
位于org.apache.xerces.impl.xs.XMLSchemaLoader.loadSchema(未知源)
位于org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar(未知源代码)
位于org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar(未知源代码)
位于org.apache.xerces.jaxp.validation.XMLSchemaFactory.newSchema(未知来源)
位于javax.xml.validation.SchemaFactory.newSchema(SchemaFactory.java:594)
位于com.hmco.ssms.services.poc.SoarPocJaxWS$1.initialValue(SoarPocJaxWS.java:59)
位于com.hmco.ssms.services.poc.SoarPocJaxWS$1.initialValue(SoarPocJaxWS.java:46)
位于java.lang.ThreadLocal.setInitialValue(ThreadLocal.java:141)
位于java.lang.ThreadLocal.get(ThreadLocal.java:131)
位于com.hmco.ssms.services.poc.SoarPocJaxWS.getParametersMultiple(SoarPocJaxW
org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document 'file:/D:/softwares/jboss-5.1.0.GA/server/default/deploy/poctest.war/WEB-INF/classes/final.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 org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
     at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
     at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
     at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
     at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
     at org.apache.xerces.impl.xs.traversers.XSDHandler.reportSchemaError(Unknown Source)
     at org.apache.xerces.impl.xs.traversers.XSDHandler.getSchemaDocument(Unknown Source)
     at org.apache.xerces.impl.xs.traversers.XSDHandler.parseSchema(Unknown Source)
     at org.apache.xerces.impl.xs.XMLSchemaLoader.loadSchema(Unknown Source)
     at org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar(Unknown Source)
     at org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar(Unknown Source)
     at org.apache.xerces.jaxp.validation.XMLSchemaFactory.newSchema(Unknown Source)
     at javax.xml.validation.SchemaFactory.newSchema(SchemaFactory.java:594)
     at com.hmco.ssms.services.poc.SoarPocJaxWS$1.initialValue(SoarPocJaxWS.java:59)
     at com.hmco.ssms.services.poc.SoarPocJaxWS$1.initialValue(SoarPocJaxWS.java:46)
     at java.lang.ThreadLocal.setInitialValue(ThreadLocal.java:141)
     at java.lang.ThreadLocal.get(ThreadLocal.java:131)
     at com.hmco.ssms.services.poc.SoarPocJaxWS.getParametersMultiple(SoarPocJaxWS.java:144)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     at java.lang.reflect.Method.invoke(Method.java:597)
     at org.jboss.wsf.container.jboss50.invocation.InvocationHandlerJSE.invoke(InvocationHandlerJSE.java:108)
     at org.jboss.ws.core.server.ServiceEndpointInvoker.invoke(ServiceEndpointInvoker.java:222)
     at org.jboss.wsf.stack.jbws.RequestHandlerImpl.processRequest(RequestHandlerImpl.java:474)
     at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleRequest(RequestHandlerImpl.java:295)
     at org.jboss.wsf.stack.jbws.RequestHandlerImpl.doPost(RequestHandlerImpl.java:205)
     at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:131)
     at org.jboss.wsf.common.servlet.AbstractEndpointServlet.service(AbstractEndpointServlet.java:85)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
     at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
     at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
     at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
     at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
     at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
     at java.lang.Thread.run(Thread.java:662)