Unable to validate using XSD: Your JAXP provider does not support XML Schema

来源:互联网 发布:手机u盘数据恢复 编辑:程序博客网 时间:2024/05/16 20:43

今天在maven工具构建一个java web(暂时只用到tomcat+spring)的工程时,遇到了几个小问题,由于以前也碰到过,所以想记录一下,以备未来查阅:
(A)tomcat启动的时候报这个错,貌似是不能解析xml文件,然后到网上找了一下解答

org.springframework.beans.factory.BeanDefinitionStoreException: Parser configuration exception parsing XML from URL [file:/E:/hefei_spring_mybatis_mvc/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/spring_chapter05/WEB-INF/classes/beans.xml]; nested exception is javax.xml.parsers.ParserConfigurationException: Unable to validate using XSD: Your JAXP provider [org.apache.xerces.jaxp.DocumentBuilderFactoryImpl@40f52e28] does not support XML Schema. Are you running on Java 1.4 with Apache Crimson? Upgrade to Apache Xerces (or Java 1.5) for full XSD support.    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:406)    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181)    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217)    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188)    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)    at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:605)    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:509)    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:446)    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328)    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973)    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)    at java.util.concurrent.FutureTask.run(FutureTask.java:266)    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)    at java.lang.Thread.run(Thread.java:745)Caused by: javax.xml.parsers.ParserConfigurationException: Unable to validate using XSD: Your JAXP provider [org.apache.xerces.jaxp.DocumentBuilderFactoryImpl@40f52e28] does not support XML Schema. Are you running on Java 1.4 with Apache Crimson? Upgrade to Apache Xerces (or Java 1.5) for full XSD support.    at org.springframework.beans.factory.xml.DefaultDocumentLoader.createDocumentBuilderFactory(DefaultDocumentLoader.java:102)    at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:71)    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadDocument(XmlBeanDefinitionReader.java:429)    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391)    ... 22 moreCaused by: java.lang.IllegalArgumentException: http://java.sun.com/xml/jaxp/properties/schemaLanguage    at org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.setAttribute(DocumentBuilderFactoryImpl.java:118)    at org.springframework.beans.factory.xml.DefaultDocumentLoader.createDocumentBuilderFactory(DefaultDocumentLoader.java:99)    ... 25 more

解决方法如下:
(1)双击tomcat跳出如下界面,点击open launch configuration,如下图
这里写图片描述
(2)然后在Arguments选项卡的VM argument中的框中复制如下参数,保存并重新运行:
这里写图片描述

-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl

(B)还有一个问题是我经常犯得问题,就是maven工程的pom.xml明明写了相关jar的依赖,但是在web工程启动的时候报找不到相关类的错误(项目背景是在maven下构建web工程的时候),这个时候查看工作区下的相应工程的/WEB-INF/lib路径下,并没有相关的jar包

解决方法如下:

  • 右键点击项目选择Properties选择Deployment Assembly,在右边点击Add按钮,在弹出的窗口中选择Java Build Path Entries
    这里写图片描述
  • 点击Next,选择Maven Dependencies
  • 点击Finish,然后可以看到已经把Maven Dependencies添加到Web应用结构中了

(c)最后一个问题就是,在解决maven工程上有红叉的时候解决思路,点击Window–>show veiw–>Markers),查看错误的详细信息,可以查看一下错误的原因。
markers视图

阅读全文
0 0
原创粉丝点击