aspectj-从另一个项目调用aspect函数会抛出noclassdeffounderror:org/aspectj/lang/joinpoint

2vuwiymt  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(210)

要求:-我们有一个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

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题