弹簧。 “schemaLocation ......必须有偶数个URI”

时间:2014-02-07 14:34:33

标签: java xml spring spring-mvc xsd

来自我的xml文件的

片段:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop" 
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:context="http://www.springframework.org/schema/context"

       xsi:schemaLocation="http://www.springframework.org/schema/beans

           http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
           http://www.springframework.org/schema/util 
           http://www.springframework.org/schema/util/spring-util.xsd
           http://www.springframework.org/schema/context/spring-context-3.1.xsd">

<!--            http://www.springframework.org/schema/aop  -->
<!--            http://www.springframework.org/schema/aop/spring-aop.xsd"> -->

    <context:component-scan base-package="myPackage" />

执行后我看到以下消息:

  

WARN [WrapperSimpleAppMain] [XmlBeanDefinitionReader]忽略XML   验证警告org.xml.sax.SAXParseException; lineNumber:14;   columnNumber:80; SchemaLocation:schemaLocation value =   'http://www.springfr amework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
  http://www.spri ngframework.org/schema/util
  http://www.springframework.org/schema/util/spring-util.xsd
  http://www.springfra mework.org/schema/context/spring-context-3.1.xsd'   必须有偶数个URI。           在com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)

如何正确解决这个问题?

2 个答案:

答案 0 :(得分:12)

您的schemaLocation值应为

格式
namespace-name schema-location [namespace-name schema-location]

你错过了

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.1.xsd

因此应该是

xsi:schemaLocation="
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
           http://www.springframework.org/schema/util 
           http://www.springframework.org/schema/util/spring-util-3.1.xsd  
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-3.1.xsd">

请注意,我已将util架构更改为3.1版。不要混搭。使用所有相同的版本。

答案 1 :(得分:1)

SchemaLocation必须采用 namespace-name schema-location [namespace-name schema-location]

例如

xmlns:mytag="http://www.brajesh.com/tagsDef"
xsi:schemaLocation="http://www.brajesh.com/tagsDef
                    http://www.brajesh.com/tagsDef.xsd"

在这里,我们将传达给xml,我们将使用我的自定义标记“mytag”&#39;在http://www.brajesh.com/tagsDef名称空间位置中定义。 您可以在http://www.brajesh.com/tagsDef.xsd的{​​{1}}位置验证这些代码。                              由于这个原因,架构位置必须具有偶数URL。