如何解决AspectJ- 从另一个项目调用方面函数抛出 NoClassDefFoundError: org/aspectj/lang/JoinPoint
要求: - 我们在 methodA
中有一个 Java 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>
<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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。