You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Java11后IntelliJ单测@Aspect不执行,但mvn test正常

排查方案

1. 检查IntelliJ的AspectJ插件与模块配置

  • 确认IntelliJ已安装AspectJ Support插件,且版本适配Java 11(插件市场搜索AspectJ,选择兼容当前IDE版本的最新版)
  • 进入File → Project Structure → Modules → 对应模块 → Aspects标签,手动添加你的@Aspect注解类,确保IDE识别为切面

2. 修正TestNG运行配置的字节码增强参数

  • 打开单个测试的Run Configuration,切换到VM options栏,添加AspectJ织入代理参数:
    -javaagent:${user.home}/.m2/repository/org/aspectj/aspectjweaver/{你的版本号}/aspectjweaver-{你的版本号}.jar
    
    注意替换版本号为pom.xml中aspectjweaver的实际版本,确保和Maven使用的一致
  • 或者直接勾选Delegate IDE build/run actions to Maven(路径:Settings → Build, Execution, Deployment → Build Tools → Maven → Runner),让IDE完全复用Maven的构建配置

3. 适配Java 11的模块系统(若使用JPMS)

  • 若项目存在module-info.java,需为切面所在包开放权限给AspectJ:
    opens com.your.package.aspects to org.aspectj.weaver;
    exports com.your.package.aspects;
    
  • 检查pom.xml中aspectj-maven-plugin的配置,确保添加Java 11兼容参数:
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>aspectj-maven-plugin</artifactId>
      <version>1.14.0</version>
      <configuration>
        <source>11</source>
        <target>11</target>
        <release>11</release>
        <complianceLevel>11</complianceLevel>
        <!-- 其他原有配置 -->
      </configuration>
    </plugin>
    

4. 核对AspectJ依赖的Scope与版本

  • 确保pom.xml中aspectjrt、aspectjweaver的scope为compile(而非test),避免IDE单跑时无法加载依赖:
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjrt</artifactId>
      <version>1.9.9.1</version> <!-- 必须是1.9.x以上版本,支持Java 11 -->
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.9.9.1</version>
      <scope>compile</scope>
    </dependency>
    
  • 执行mvn dependency:tree,对比IntelliJ External Libraries中的依赖版本,排除版本冲突

5. 检查IntelliJ的Java语言级别配置

  • 进入File → Project Structure → Project Settings → Project,设置Project SDK为Java 11,Project language level为11 - Local variable syntax for lambda parameters
  • 同样在Modules标签下,确保每个模块的Language level也设为11

内容的提问来源于stack exchange,提问作者CodeBlooded

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 06:25:53