x64架构下NetBeans集成Tomcat启动Web应用报IllegalAccessError
问题根因
这个报错是JDK模块机制带来的兼容性问题:JDK9之后引入的**模块系统(Jigsaw)**默认限制了未命名模块访问java.xml模块内部的非公开类,而NetBeans的Tomcat管理插件刚好调用了com.sun.org.apache.xerces.internal.impl.dv.util.Base64这个内部工具类,因此触发了非法访问异常。
可落地的解决方案
按操作成本从低到高排序:
- 追加NetBeans启动权限参数(无需调换现有软件版本,最快生效)
- 打开NetBeans安装路径下的
etc/netbeans.conf配置文件 - 找到
netbeans_default_options配置行,在现有参数的末尾追加:--add-exports=java.xml/com.sun.org.apache.xerces.internal.impl.dv.util=ALL-UNNAMED - 保存文件后完全重启NetBeans,再启动Tomcat部署应用即可
- 打开NetBeans安装路径下的
- 调整版本适配关系
- 如果不想修改启动配置,可以选择两种适配方案:要么将JDK降级到无模块系统的JDK8,要么将NetBeans升级到18及以上的稳定版本——新版本的Tomcat插件已经替换了对上述内部Base64类的依赖,改用JDK公开的
java.util.Base64实现,不会触发这类权限报错
- 如果不想修改启动配置,可以选择两种适配方案:要么将JDK降级到无模块系统的JDK8,要么将NetBeans升级到18及以上的稳定版本——新版本的Tomcat插件已经替换了对上述内部Base64类的依赖,改用JDK公开的
- 额外排查项:核对系统变量中配置的JDK路径,确保NetBeans和Tomcat调用的是同一版本的JDK,避免版本错位引发其他类加载类异常
内容的提问来源于stack exchange,提问作者Emir Gonuler
相关产品推荐
相关产品推荐

