要求:-我们有一个java methodA
在里面 ProjectA
. 这 methodA
通过将jar依赖项添加到POM中,跨不同的团队使用。我们想收集一些指标,比如哪些团队正在呼叫 methodA
.
想法:我正在探索在我的非spring项目中使用aspectj。
问题:在 ProjectB
,我们添加了 ProjectA
依赖和调用 methodA
,但最终得到以下错误:
java.lang.NoClassDefFoundError: org/aspectj/lang/Signature
项目a: src/main/javaAspectClass.java
在要监视的方法上具有环绕和切入点
@Around("execution(* com.aspectj.CommonClass.*(..))")
public Object around(ProceedingJoinPoint point) throws Throwable {
System.out.println("Function monitored");
}
src/main/java/com/aspectj/CommonClass/methodA pom.xml
:添加了依赖项 aspectjrt
, aspectjweaver
和surefire插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.9</version>
<configuration>
<argLine>-XX:-UseSplitVerifier</argLine>
<argLine>-javaagent:C:\Users\**\aspectj\aspectjweaver\1.8.13\aspectjweaver-1.8.13.jar</argLine>
</configuration>
</plugin>
和aspectj maven插件
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.7</version>
<configuration>
<showWeaveInfo>true</showWeaveInfo>
<source>1.8</source>
<target>1.8</target>
<Xlint>ignore</Xlint>
<complianceLevel>1.8</complianceLevel>
<encoding>UTF-8</encoding>
<verbose>true</verbose>
</configuration>
<executions>
<execution>
<!-- IMPORTANT -->
<phase>process-sources</phase>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
</plugin>
项目b: pom.xml
依赖于 ProjectA
在测试课上,我打电话 methodA
属于 ProjectA
,但获取以下错误:
java.lang.NoClassDefFoundError: org/aspectj/lang/Signature
暂无答案!
目前还没有任何答案,快来回答吧!