Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring AOP: "no declaration can be found for element 'aop:config' "

I've seen that a few instances of this problem have been raised already. However, I am confident that I satisfy the criteria that has been outlined in those solutions. i.e. I'm pretty sure I have the desired jars on my class path + my schemalocation addresses look in order.

One solution mentioned that the issue can be caused by having another XML parser on the classpath. I do have dom4j on my classpath but I have removed it to test, and the problem persists.

Here's my classpath:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="src" path="test"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/mysql-connector-java-5.1.18-bin.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/jaxen-1.1.3.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/org.springframework.aop-3.1.0.RC1.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/org.springframework.asm-3.1.0.RC1.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/org.springframework.aspects-3.1.0.RC1.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/org.springframework.beans-3.1.0.RC1.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/org.springframework.context.support-3.1.0.RC1.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/org.springframework.context-3.1.0.RC1.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/org.springframework.core-3.1.0.RC1.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/org.springframework.expression-3.1.0.RC1.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/org.springframework.instrument.tomcat-3.1.0.RC1.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/org.springframework.instrument-3.1.0.RC1.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/org.springframework.jdbc-3.1.0.RC1.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/org.springframework.jms-3.1.0.RC1.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/org.springframework.orm-3.1.0.RC1.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/org.springframework.oxm-3.1.0.RC1.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/org.springframework.test-3.1.0.RC1.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/org.springframework.transaction-3.1.0.RC1.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/org.springframework.web.portlet-3.1.0.RC1.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/org.springframework.web.servlet-3.1.0.RC1.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/org.springframework.web.struts-3.1.0.RC1.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/org.springframework.web-3.1.0.RC1.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/log4j-1.2.16.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/commons-logging-1.1.1.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/spring-mvc-airline/WebContent/WEB-INF/lib/junit-4.9b2.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/mybatis-3.1.0-SNAPSHOT.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/mybatis-spring-1.1.0.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/lambdaj-2.4.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/cglib-2.2.2.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/aspectj-1.6.12.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/aspectjrt-1.5.4.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/dom4j-1.6.1.jar"/>
    <classpathentry kind="lib" path="C:/Users/user/workspace/rugby-project/lib/spring-aop-3.0.3.RELEASE.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

And here's my 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
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <bean id="timer" class="ie.ucd.dec.al.rugby.aop.Timer" />

    <aop:config>
        <aop:aspect ref="timer">
            <aop:pointcut id="migrationManager_migrate"
                expression="execution(* ie.ucd.dec.al.rugby.data.migrate.MigrationManager.migrateAllXmlFilesInDirectory())" />

            <aop:around pointcut-ref="migrationManager_migrate"
                method="timeJob()" />
        </aop:aspect>

    </aop:config>

</beans>

Finally, here is my stacktrace:

Exception in thread "main"
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 15 in XML document from class path resource [spring-aop.xml] is invalid; nested exception is
org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'aop:config'.
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:396)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:243)
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127)
    at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93)
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131)
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:522)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:436)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)
    at ie.ucd.dec.al.rugby.data.migrate.MigrationRunner.main(MigrationRunner.java:10)
Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'aop:config'.
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(UnknownSource)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
    at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:75)
    at 

Hope someone can help.

Thanks!

like image 826
HellishHeat Avatar asked Apr 08 '12 10:04

HellishHeat


People also ask

How do I enable AOP in spring?

For using Spring AOP in Spring beans, we need to do the following: Declare AOP namespace like xmlns:aop=“https://www.springframework.org/schema/aop” Add aop:aspectj-autoproxy element to enable Spring AspectJ support with auto proxy at runtime. Configure Aspect classes as other Spring beans.

Which of the following are valid Springs AOP configuration elements?

Let's see the xml elements that are used to define advice. aop:before It is applied before calling the actual business logic method. aop:after It is applied after calling the actual business logic method. aop:after-returning it is applied after calling the actual business logic method.

What is the difference between spring Aspect Oriented Programming AOP and AspectJ AOP?

Spring AOP and AspectJ have different goals. Spring AOP aims to provide a simple AOP implementation across Spring IoC to solve the most common problems that programmers face. On the other hand, AspectJ is the original AOP technology which aims to provide complete AOP solution.

What is target object in Spring AOP?

Target Object: These are the objects on which advices are applied. In Spring AOP, a subclass is created at runtime where the target method is overridden and advices are included based on their configuration. Proxy: It is an object that is created after applying advice to the target object.


1 Answers

The order of xsi:schemaLocation items is wrong, each namespace URI should be followed by its XSD location:

xsi:schemaLocation="
     http://www.springframework.org/schema/beans             
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd         
     http://www.springframework.org/schema/context
     http://www.springframework.org/schema/context/spring-context-3.0.xsd          
     http://www.springframework.org/schema/aop         
     http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"
like image 122
axtavt Avatar answered Nov 04 '22 03:11

axtavt