升级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织入代理参数:
注意替换版本号为pom.xml中aspectjweaver的实际版本,确保和Maven使用的一致-javaagent:${user.home}/.m2/repository/org/aspectj/aspectjweaver/{你的版本号}/aspectjweaver-{你的版本号}.jar - 或者直接勾选
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
相关产品推荐
相关产品推荐

