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

使用OpenAuth库时无法访问java.base模块类的问题求助

错误原因与解决方案:superclass access check failed(OpenAuth库场景)

错误原因

这个错误源于Java 9及以上引入的**模块系统(JPMS)**访问限制:

  • sun.net.www.protocol.https.Handler是java.base模块中的内部非公开API,不属于Java标准公开接口范畴。
  • OpenAuth库的fr.litarvan.openauth.microsoft.LoginFrame$2类直接继承了该内部类,但你的应用运行在未命名模块中,而java.base模块默认不会将sun.net.www.protocol.https包导出给未命名模块,因此触发访问检查失败。

解决方法

方法1:添加JVM启动参数绕过模块检查

启动程序时,添加以下JVM参数,强制让java.base模块将目标包导出给未命名模块:

--add-exports java.base/sun.net.www.protocol.https=ALL-UNNAMED

若后续出现其他类似内部API访问错误,可参照此格式添加对应--add-exports参数。

方法2:升级OpenAuth库到适配模块化的版本

检查OpenAuth库的最新版本,若开发者已更新代码替换了对内部API的依赖(改用Java公开API实现),直接升级到该版本即可从根源解决问题。

方法3:手动修改反编译后的代码(若自行修改过库代码)

如果是通过jadx反编译并修改了OpenAuth的代码,可替换sun.net.www.protocol.https.Handler的使用:

  • 改用Java标准的HttpsURLConnection处理HTTPS请求,或者使用Java 11+提供的HttpClient API,这些都是公开且受支持的接口,避免依赖内部API。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 15:48:22