事情缘由:
在maven工程的pom文件中加入org.aspectj:aspectjrt:jar:1.6.6 和 org.aspectj:aspectjweaver:jar:1.6.6 依赖,虽然通过mvn dependency:tree来分析依赖发现看这个包虽然被依赖进去了,但始终在eclipse里的referenced libraries里找不到这个包;查看.classpath文件,发现eclipse的确没有这个包的依赖路径信息,也就是说,aspectjrt包根本没有加到eclipse类路径中,因而无法引入相关类。
出现原因:
在maven-eclipse-plugin插件非2.5.1的版本中,EclipseClasspathWriter忽略了aspectj libraries,不将这个依赖加入classpath,是这么写的:
// Skip aspectj libraries since they are in the container.
if ( ( config.getAjdtVersion() != 0 ) && dep.getArtifactId().toLowerCase().indexOf( “aspectj” ) >= 0 )
{
return;
}
具体可参见:http://maven.apache.org/plugins/maven-eclipse-plugin/xref/org/apache/maven/plugin/eclipse/writers/EclipseClasspathWriter.html line529
在默认情况下,maven-eclipse-plugin插件假定你已经使用了AJDT插件,并且已经使用了aspectj依赖,因而maven- eclipse-plugin忽略了没有安装AJDT插件的情况而导致aspectj不可用的情况,导致了这个问题的出现。
AJDT(AspectJ Development Tools for Eclipse),是将 AspectJ 与 Eclipse 平台紧密集成在一起,并为 AspectJ 开发人员提供更多开发人员使用 Eclipse 时可以得到的高级工具支持。
解决之道:
1,手动修改classpath文件,加入路径的依赖。这个方法能解决问题,但比较土。
2,手动指定pom文件里maven-eclipse-plugin版本为2.5.1;
3,在pom文件里对插件加入如下配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<ajdtVersion>none</ajdtVersion>
</configuration>
</plugin>
通过none的none版本来禁用AJDT,这样就会引入aspectJ依赖,这种应该是比较好的解决方案。
参看资料:
http://jira.codehaus.org/browse/MECLIPSE-584
http://jira.codehaus.org/browse/MECLIPSE-594
分享到:
相关推荐
Eclipse AspectJ: Aspect Oriented Programming with AspectJ and the Eclipse ADT
AJDT-Aspectj Development Tools aspecte的eclipse 开发插件
Eclipse Aspectj: Aspect Oriented Programming with AspectJ and the Eclipse AspectJ Development Tools
This book is an introduction to AOP with AspectJ and Eclipse and shows how to create a productive AO development environment by using the AspectJ Development Tools for Eclipse (AJDT). Tools have an ...
然而,尽管aspectj纳入在eclipse这个日益流行的java开源ide之内,但是找到一种实用、非理论的方式来学习这种语言及其他aop工具和技术已经成为一个实际的问题。 迄今为止,本书提供了实用的解决方案以及大量的代码...
如果可以正常使用还望大家评论一下,方便他人下载;方法:直接解压目录放在“%Eclipse安装目录%\dropins”下就可以了;
aspectj和aspectjweaver的jar包,aspectj和aspectjweaver的jar包
aspectj.weaver 和 aspectj.tools 类包 Spring 4.X 使用@AspectJ和Schema 报错,添加aspectj.weaver 和 aspectj.tools 类包的依赖。
Java JDK代理、CGLIB、AspectJ代理分析比较
aspectj-1.7.0.jar aspectj的包
aspectj
Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动Aspectj驱动
aspectj-1.9.5.jar 官网下载地址:https://www.eclipse.org/aspectj/downloads.php
学习aspectJ,帮助学习面向方面的知识。
Aspectj开发指南 博文链接:https://g007n.iteye.com/blog/249602
关于AspectJ的比较简要的PPT,原作者对AspectJ进行了简洁明了的介绍,易懂,
spring和aspectj的aop实验,详细内容可以移步至博客:https://mp.csdn.net/postedit/97750888
org.aspectj,aspectj项目库(org.aspectj).zip,建筑物
aspectj-1.7.1.jar
aspectj架包,版本号:aspectj-1.6.9.jar