web-dev-qa-db-fra.com

Obtention du message d'erreur avec spring "cvc-elt.1: Impossible de trouver la déclaration de l'élément 'beans'".

J'essaie de mettre en place une application de printemps simple et je reçois l'exception ci-dessous. Ceci est exécuté seul dans 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)

Voici la partie initiale de mon code:

public static void main(String[] args) {

        try {

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


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

Voici mon fichier 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>
10
opike

Êtes-vous sûr d'avoir spring-beans sur le classpath?

Cette erreur signifie normalement qu’il ne peut pas trouver un spring.schemas (qui est dans spring-beans.jar) lui expliquant la signification de cet espace de noms.

D'autres options sont que le plugin Maven Shade a endommagé spring.schemas, mais ce n'est probablement pas le cas, car vous n'avez pas mentionné Maven.

12
FauxFaux

Peut-être que ce post peut vous aider:

Impossible de trouver la déclaration de l'élément 'beans' en mode hors connexion Internet

Cela semble être un problème de configuration de schéma.

1
Mik378

Lorsque j'ai eu ce problème dans STS, je viens de nettoyer le projet et cela a fonctionné.

1
emurano
1
Swarit Agarwal

le plugin maven shade semble remplacer le fichier spring.schemas dans les pots, il est donc utile de créer l'un des nôtres avec tout le contenu individuel de spring.schema de chaque pot.

1
sathishvisa