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>
Ê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.
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.
Lorsque j'ai eu ce problème dans STS, je viens de nettoyer le projet et cela a fonctionné.
Il pourrait y avoir un risque d'incompatibilité entre la version de Spring Bean et la définition de xsd.
Par exemple Beans xsi: schemaLocation = "http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.2.xsdhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.2.xsdhttp://www.springframework.org/schema/utilhttp://www.springframework.org/schema/util/spring-util-3.2.xsdhttp : //www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsdhttp: // www. springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd
Alors que dans la version de printemps est 3.0.5-Release
Vérifiez la version de classpath et conservez-la. Shoul
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.