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

Jenkins装OpenJDK17后APK签名失败,切回OpenJDK11仍无效求助

Jenkins Android签名插件切换JDK后仍报错的求助

问题详情

在Jenkins上安装OpenJDK17后,使用Android Signing插件签名APK时出现以下错误:

10:59:59 FATAL: class com.android.apksig.internal.apk.v1.V1SchemeSigner (in unnamed module @0x38dba2ff) cannot access class sun.security.x509.AlgorithmId (in module java.base) because module java.base does not export sun.security.x509 to unnamed module @0x38dba2ff
10:59:59 java.lang.IllegalAccessError: class com.android.apksig.internal.apk.v1.V1SchemeSigner (in unnamed module @0x38dba2ff) cannot access class sun.security.x509.AlgorithmId (in module java.base) because module java.base does not export sun.security.x509 to unnamed module @0x38dba2ff
10:59:59    at com.android.apksig.internal.apk.v1.V1SchemeSigner.getSupportedAlgorithmId(V1SchemeSigner.java:625)
10:59:59    at com.android.apksig.internal.apk.v1.V1SchemeSigner.<clinit>(V1SchemeSigner.java:541)
10:59:59    at com.android.apksig.DefaultApkSignerEngine.<init>(DefaultApkSignerEngine.java:149)
10:59:59    at com.android.apksig.DefaultApkSignerEngine.<init>(DefaultApkSignerEngine.java:52)
10:59:59    at com.android.apksig.DefaultApkSignerEngine$Builder.build(DefaultApkSignerEngine.java:902)
10:59:59    at com.android.apksig.ApkSigner.sign(ApkSigner.java:260)
10:59:59    at com.android.apksig.ApkSigner.sign(ApkSigner.java:179)
10:59:59    at org.jenkinsci.plugins.androidsigning.SignApksBuilder$SignApkCallable.invoke(SignApksBuilder.java:510)
10:59:59    at org.jenkinsci.plugins.androidsigning.SignApksBuilder$SignApkCallable.invoke(SignApksBuilder.java:464)
10:59:59    at hudson.FilePath.act(FilePath.java:1198)
10:59:59    at hudson.FilePath.act(FilePath.java:1181)
10:59:59    at org.jenkinsci.plugins.androidsigning.SignApksBuilder.perform(SignApksBuilder.java:359)
10:59:59    at jenkins.tasks.SimpleBuildStep.perform(SimpleBuildStep.java:123)
10:59:59    at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:80)
10:59:59    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
10:59:59    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:818)
10:59:59    at hudson.model.Build$BuildExecution.build(Build.java:199)
10:59:59    at hudson.model.Build$BuildExecution.doRun(Build.java:164)
10:59:59    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:526)
10:59:59    at hudson.model.Run.execute(Run.java:1900)
10:59:59    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:44)
10:59:59    at hudson.model.ResourceController.execute(ResourceController.java:101)
10:59:59    at hudson.model.Executor.run(Executor.java:442)

已尝试的操作

此前使用OpenJDK11时签名正常,因此将流水线切换回OpenJDK11:

  • 在签名步骤前添加构建步骤执行java --version,输出确认当前环境为OpenJDK11:
10:59:59 + java --version
10:59:59 openjdk 11.0.18 2023-01-17
10:59:59 OpenJDK Runtime Environment (build 11.0.18+10-post-Debian-1deb11u1)
10:59:59 OpenJDK 64-Bit Server VM (build 11.0.18+10-post-Debian-1deb11u1, mixed mode, sharing)
  • 使用update-alternatives --config java切换系统默认JDK至OpenJDK11,但问题仍然存在。

解决建议

  • 检查Jenkins全局JDK配置:进入Jenkins「全局工具配置」,确认OpenJDK11已正确添加并设置为默认,同时确保签名步骤明确指定使用该JDK(构建步骤的shell环境JDK和插件使用的JDK可能不是同一个)
  • 更新Android Signing插件:旧版本插件可能存在JDK兼容性问题,更新至最新版后重试
  • 若需继续使用OpenJDK17:在Jenkins的JVM启动参数中添加--add-exports=java.base/sun.security.x509=ALL-UNNAMED,解除模块访问限制
  • 清理构建缓存与重启Jenkins:清理工作空间缓存,或重启Jenkins服务,避免旧JDK依赖残留
  • 检查代理节点配置:如果使用Jenkins代理节点构建,需确保代理节点的JDK版本为11,且工具配置与主节点一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 15:17:02