在AEMaaCS中迁移到Java 21的过程中存在Java 8和Java 11弃用问题
Adobe Experience Manager (AEM) as a Cloud Service在运行时不再支持Java 8或Java 11,需要迁移到Java 21。 当构建时Java版本、运行时Java版本、第三方依赖项或迁移时间线造成兼容性问题和所需操作的不确定性时,会发生此问题。 要解决此问题,请验证运行时、验证兼容性并更新内部版本。
描述 description
环境
Adobe Experience Manager as a Cloud Service (AEMaaCS)
问题/症状
- Cloud Manager内部版本通知指示使用了已弃用的Java API。
- 环境在运行时运行Java 21,而内部版本仍使用Java 11。
- 团队不确定在Java 21运行时转出后是否仍支持Java 11版本。
- 操作中心通知参考Java弃用或迁移要求。
- 运行时和构建时Java版本在各个环境中似乎不一致。
根本原因
出现此问题的原因是AEM as a Cloud Service将运行时环境升级到Java 21,而客户项目可以继续使用Java 11构建过程。 运行时Java由Adobe管理,而构建时Java由项目配置控制。 误解此分隔,以及已弃用的API和依赖项不兼容,会导致迁移问题和构建验证问题。
解决方法 resolution
按照以下步骤验证Java运行时用法,并为Java 21兼容性准备应用程序:
- 通过从Cloud Manager中打开Developer Console并查看报告的Java版本,验证运行时Java版本。
- 通过在Developer Console中看不到运行时版本时记录
System.getProperty("java.version")的值,通过自定义OSGi组件记录运行时Java版本。 - 查看
.cloudmanager/java-version文件,并确定项目是使用Java 11、17还是21生成。 - 通过确保环境在AEM版本17098或更高版本上、使用Java 21运行本地SDK、在本地部署应用程序以及验证是否不存在类加载或依赖关系问题来验证Java 21兼容性。
- 创建将
.cloudmanager/java-version设置为21的开发分支并执行开发管道以验证Java 21下的应用程序行为。 - 当操作中心通知出现时,查看已弃用的API用法,并更新引用已弃用或已删除的包(如已删除的Sling、Felix或Jetty API)的代码。
- 通过创建或修改带21的
.cloudmanager/java-version文件并在兼容性验证成功后运行非生产管道,将内部版本更新为Java 21。 - 查看任何Java 21迁移通知电子邮件,并更新依赖关系分析中标识的不支持的库或依赖关系。 例如,在识别后替换或升级不支持的库版本,如Groovy或Logback。
- 通过确认运行时报告Java 21、Cloud Manager构建成功、不再显示弃用通知以及功能测试成功通过来验证解决方案。
何时上报
- 验证权限后,Developer Console仍不可访问。
- 在Java 21验证后,应用程序继续显示依赖项不兼容性。
- 将内部版本更新为Java 21后,Cloud Manager内部版本会失败。
- 迁移分析和修正后,不受支持的依赖项仍未解析。
相关阅读
recommendation-more-help
experience-cloud-kcs-help-kbarticles