Spring AOP - исключение: org.springframework.beans.factory.BeanDefinitionStoreException: [duplicate]

1

Я использую Eclipse и Java8_40. Я начинаю с Spring Framework с AOP (с http://www.tutorialspoint.com/spring/aop_with_spring.htm) и имею некоторые проблемы с Beans.xml(?). Я делаю правильный пример, но он разбивается и показывает мне исключение.

У меня есть CLASSPATH: Apache *.jars

  • Обще-каротаж 1.2.jar
  • Обще-каротаж-1,2-javadoc.jar

Весна *.jars

  • весна-АОП-4.1.5.RELEASE.jar
  • весна-бобы-4.1.5.RELEASE.jar
  • пружинные контекстно-4.1.5.RELEASE.jar
  • весна-аспекты, 4.1.5.RELEASE.jar
  • весна-контекст-поддержка-4.1.5.RELEASE.jar
  • весна-ядро-4.1.5.RELEASE.jar
  • весна-веб-4.1.5.RELEASE.jar
  • весна-webmvc-4.1.5.RELEASE.jar
  • весна-выражение-4.1.5.RELEASE.jar

AOP *.jars

  • aspectjrt-1.8.5.jar
  • aspectjweaver-1.8.5.jar
  • AspectJ-1.8.5.jar

Программа КЛИЕНТ

package spring.program;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import spring.aop.trida.Student;
public class ProgramAOP1 {
    @SuppressWarnings("resource")
    public static void main(String [] args){
        System.out.println("Start Programu");
        ApplicationContext context =  new ClassPathXmlApplicationContext("Beans.xml");
        Student student = (Student) context.getBean("student");
        student.getName();
        student.getAge();
        System.out.println("Konec Programu");   }
}

Весенний боб AOP класс:

package spring.beanAOP;
public class BeanAOP {
    public void beforeAdvice(){
        System.out.println("Going to setup student profile.");  }
    public void afterAdvice(){
        System.out.println("Student profile has been setup.");  }
    public void afterReturningAdvice(Object retVal){
        System.out.println("Returning:" + retVal.toString() );  }
    public void AfterThrowingAdvice(IllegalArgumentException ex){
        System.out.println("There has been an exception: " + ex.toString());    }   
}

Класс POJO:

package spring.aop.trida;
public class Student {
    private Integer age;
    private String name;
    public void setAge(Integer age) {
        this.age = age; }
    public Integer getAge() {
        System.out.println("Age : " + age );
        return age; }
    public void setName(String name) {
        this.name = name;   }
    public String getName() {
        System.out.println("Name : " + name );
        return name;    }
    public void printThrowException(){
        System.out.println("Exception raised"); 
        throw new IllegalArgumentException();   }
}

Beans.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-4.1.xsd    
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd ">
    <aop:config>
        <aop:aspect id="log" ref="beanAOP">
            <aop:pointcut id="selectAll" expression="execution(* com.tutorialspoint.*.*(..))"/>
            <aop:before pointcut-ref="selectAll" method="beforeAdvice"/>
            <aop:after pointcut-ref="selectAll" method="afterAdvice"/>
            <aop:after-returning pointcut-ref="selectAll" returning="retVal" method="afterReturningAdvice"/>
            <aop:after-throwing pointcut-ref="selectAll" throwing="ex" method="AfterThrowingAdvice"/>
        </aop:aspect>
    </aop:config>

    <!-- Definition for student bean -->
    <bean id="student" class="spring.aop.trida.Student">
        <property name="name"  value="Zara" />
        <property name="age"  value="11"/>      
    </bean>
    <!-- Definition for logging aspect -->
    <bean id="beanAOP" class="spring.beanAOP.BeanAOP"/>
</beans>

Исключение:


    Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [Beans.xml]; nested exception is java.lang.NoClassDefFoundError: org/aopalliance/aop/Advice at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:414) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336) at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188) at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:252)    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:129) at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)   at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:452)  at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:139)   at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:83)
        at spring.program.ProgramAOP1.main(ProgramAOP1.java:17)
    Caused by: java.lang.NoClassDefFoundError: org/aopalliance/aop/Advice
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at org.springframework.aop.config.ConfigBeanDefinitionParser.getAdviceClass(ConfigBeanDefinitionParser.java:411)
        at org.springframework.aop.config.ConfigBeanDefinitionParser.createAdviceDefinition(ConfigBeanDefinitionParser.java:367)
        at org.springframework.aop.config.ConfigBeanDefinitionParser.parseAdvice(ConfigBeanDefinitionParser.java:333)
        at org.springframework.aop.config.ConfigBeanDefinitionParser.parseAspect(ConfigBeanDefinitionParser.java:228)
        at org.springframework.aop.config.ConfigBeanDefinitionParser.parse(ConfigBeanDefinitionParser.java:116)
        at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74)
        at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1427)
        at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1417)
        at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:174)
        at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:144)
        at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:100)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:510)
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:392)
        ... 14 more

  • 0
    Используйте aopalliance.jar, и он должен работать
  • 0
    Замечательно, спасибо, это работа
Теги:
spring
exception
aop

1 ответ

0
Лучший ответ

Вы пропускаете банку aopalliance, которая содержит следующие классы:

org.aopalliance.aop.Advice.class
org.aopalliance.aop.AspectException.class
org.aopalliance.intercept.ConstructorInterceptor.class
org.aopalliance.intercept.ConstructorInvocation.class
org.aopalliance.intercept.Interceptor.class
org.aopalliance.intercept.Invocation.class
org.aopalliance.intercept.Joinpoint.class
org.aopalliance.intercept.MethodInterceptor.class
org.aopalliance.intercept.MethodInvocation.class

Вы можете найти его здесь.

  • 0
    Замечательно, спасибо, это работа

Ещё вопросы

Сообщество Overcoder
Наверх
Меню