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

Eclipse中Spring AOP配置运行异常,同代码可在STS正常运行问题求助

问题根因

你遇到的异常和AOP配置无关,是JDK版本与Spring版本不兼容导致的:

  • 你使用的Spring 3.2版本内置的旧版CGLIB依赖JDK的反射能力实现动态代理
  • JDK 9及以上版本引入了模块化系统(JPMS),默认禁止了CGLIB需要的ClassLoader.defineClass方法反射访问权限
  • STS默认自带JDK 8,所以可以正常运行;Eclipse中你配置的运行JDK为9及以上版本,所以触发权限报错
解决方案

方案1:降级JDK到1.8(最稳妥,无需修改代码和依赖)

Spring 3.2官方支持的最高JDK版本为JDK 8,按如下步骤修改Eclipse配置即可:

  1. 右键项目 -> Build Path -> Configure Build Path -> Libraries标签页,将JRE System Library替换为JavaSE-1.8
  2. 打开主类的Run Configurations -> JRE标签页,选择JDK 1.8作为运行环境

方案2:升级Spring版本到5.3+(保留高版本JDK)

高版本Spring内置的CGLIB已经适配了JDK 9+的模块化机制,只需将项目依赖的Spring全组件版本升级到5.3及以上稳定版,同时将beans.xml中3.2版本的xsd地址替换为对应高版本即可。

方案3:添加JVM启动参数(临时兼容,无需修改版本)

如果不想调整JDK和Spring版本,可在Eclipse的运行配置中添加模块开放参数:

  1. 打开主类的Run Configurations -> Arguments标签页
  2. 在VM arguments输入框中添加如下参数:
--add-opens java.base/java.lang=ALL-UNNAMED

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:54:04