2015-03-23 4 views
1

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

Я имею в CLASSPATH: Apache * .jars

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

пружине * .jars

  • spring-aop-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
  • spring-expression-4.1.5.RELEASE.jar

АОП * .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

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

ответ

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 

Вы можете найти его here.

+0

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