10

我正在尝试设置一个简单的弹簧应用程序,但出现以下异常。这是在 eclipse indigo 中独立运行的。

Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Line 2 in XML document from class path resource [context.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'beans'.
org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'beans'.
      at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
      at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)
      at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)
      at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)

这是我的代码的初始部分:

public static void main(String[] args) {

        try {

            BeanFactory beanfactory = new ClassPathXmlApplicationContext(
                    "context.xml");


            FirstBean bean = (FirstBean) beanfactory.getBean("show");

这是我的 context.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<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"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="anotherBean" class="AnotherBean" />
<bean id="show" class="FirstBean">
<constructor-arg ref="anotherBean" />
</bean>
<bean id="populateFD" class="PopulateFactData">
<constructor-arg value="localhost" />
<constructor-arg value="3309" />
</bean>
</beans>
4

5 回答 5

13

你确定你spring-beans在类路径上吗?

此错误通常意味着它找不到一个spring.schemas(在 中spring-beans.jar)向它解释该名称空间的含义。

其他选项是 Maven Shade 插件已损坏spring.schemas,但由于您没有提到 Maven,因此不太可能出现这种情况。

于 2012-04-17T00:07:47.240 回答
1

也许这篇文章可以帮助你:

在 Internet 离线模式下找不到元素“bean”的声明

这似乎是架构配置的问题。

于 2012-04-16T23:23:52.960 回答
1

maven shade 插件似乎替换了 jar 中的 spring.schemas 文件,因此使用每个 jar 中的所有单独的 spring.schema 内容创建我们自己的一个应该可以解决问题。

于 2013-06-24T21:20:13.083 回答
1

当我在 STS 中遇到这个问题时,我刚刚清理了项目并且它起作用了。

于 2015-03-03T22:09:17.263 回答