2013-02-17 90 views
0

引用我学习的AspectJ注解的Spring框架配置AOP看完这篇文章: http://www.tutorialspoint.com/spring/aspectj_based_aop_appoach.htm问题丝毫AspecJ AOP配置春:java.lang.IllegalArgumentException异常:在错误:: 0找不到切入点

以不同的方式从这篇文章我不手动添加罐子在我的项目,但我使用Maven。

的问题是,当我尝试执行MainApp类我得到以下错误:

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'student' defined in class path resource [Beans.xml]: Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut selectAll 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) 
    at org.andrea.myexample.mySpringAspectJAOP.MainApp.main(MainApp.java:14) 
Caused by: java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut selectAll 
    at org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression(PointcutParser.java:317) 
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:207) 
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:193) 
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.checkReadyToMatch(AspectJExpressionPointcut.java:182) 
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.getClassFilter(AspectJExpressionPointcut.java:163) 
    at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:209) 
    at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:263) 
    at org.springframework.aop.support.AopUtils.findAdvisorsThatCanApply(AopUtils.java:295) 
    at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findAdvisorsThatCanApply(AbstractAdvisorAutoProxyCreator.java:117) 
    at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findEligibleAdvisors(AbstractAdvisorAutoProxyCreator.java:87) 
    at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.getAdvicesAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:68) 
    at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:359) 
    at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:322) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:407) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1461) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
    ... 11 more** 

我想我已经错过了一些依赖,但我不明白什么...

这是我的的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>org.andrea.myexample</groupId> 
<artifactId>mySpringAspectJAOP</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>jar</packaging> 

<name>mySpringAspectJAOP</name> 
<url>http://maven.apache.org</url> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>3.1.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <version>3.1.1.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>3.1.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context-support</artifactId> 
     <version>3.1.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjtools</artifactId> 
     <version>1.6.2</version> 
    </dependency> 


    <dependency> 
     <groupId>cglib</groupId> 
     <artifactId>cglib</artifactId> 
     <version>2.2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
     <version>3.1.1.RELEASE</version> 
    </dependency> 
</dependencies> 
</project> 

为什么我有这个问题?我能做些什么来解决?

TNX 安德烈

溶液(自己解决):

我从我的pom.xml文件中删除这两个依赖:

<dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
     <version>3.1.1.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>org.aspectj</groupId> 
     <artifactId>aspectjtools</artifactId> 
     <version>1.6.2</version> 
    </dependency> 

而且我已经取代了它与这一个:

<dependency> 
       <groupId>org.aspectj</groupId> 
       <artifactId>aspectjweaver</artifactId> 
       <version>1.6.8</version> 
      </dependency> 

似乎工作正常:-)

+0

来自异常跟踪,我不认为你的问题与maven依赖关系有什么关系。它看起来更像是你错过了**切入点定义,或者你恰好忘记将你的** @ Aspect ** bean注册到Spring容器中。 – spiritwalker 2013-02-17 09:40:10

+0

相关代码在本文中(与我的示例项目相同):http://www.tutorialspoint.com/spring/aspectj_based_aop_appoach.htm 您对此有所了解吗? – AndreaNobili 2013-02-17 10:14:44

+0

教程代码对我很好。当您复制它时,您一定错过了某些东西。你可以请你们** ** beans.xml **以及** Logging.java ** – spiritwalker 2013-02-17 10:43:38

回答

1

@AndreaNobili,以下是我的maven依赖项。很高兴你自己解决了这个问题。

<!-- Application Context --> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context</artifactId> 
    <version>${spring.framework.version}</version> 
</dependency> 
<!-- Spring AOP --> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-aop</artifactId> 
    <version>${spring.framework.version}</version> 
</dependency> 
<!-- to use AspectJ style AOP interception --> 
<dependency> 
    <groupId>org.aspectj</groupId> 
    <artifactId>aspectjrt</artifactId> 
    <version>1.6.11</version> 
</dependency> 
<dependency> 
    <groupId>org.aspectj</groupId> 
    <artifactId>aspectjweaver</artifactId> 
    <version>1.6.11</version> 
</dependency> 
+0

好吧,TNX ... 最后一个痘痘的东西......你可以尝试删除aspectjrt依赖关系,并说我如果仍然运行良好? 你知道什么是aspectjrt和aspectjweaver之间的deifference? TNX – AndreaNobili 2013-02-17 11:02:06

+0

@AndreaNobili:aspectjrt.jar只是运行时间和多少,比aspectjweaver小得多。jar,因为后者是一个超类,包含运行时类和加载时间更长的weaver。话虽如此,如果您使用LTW,您只需要aspectjweaver。对于编译时编织来说,包含aspectjrt就足够了。 – kriegaex 2013-03-15 14:09:44

相关问题