我已将我的项目从 Java 11 更新到 17,因此我必须将我的 WildFly 版本从 15 更新到 25,因为 Java 17 的 WAR 与 WildFly 15 不兼容。问题是,我是否必须从
javax
迁移jakarta
因为 WildFly 在 WildFly 17 发布后现在支持 Jakarta EE 8?那么,是否真的必须从 jakarta
移动到 javax
还是有解决方法?
Jakarta EE 8 仍然使用
javax.*
包。它本质上与 Java EE 8 完全相同,只是品牌名称发生了变化。
Jakarta EE 9 是第一个使用 jakarta.*
包的版本。 Jakarta EE 10 延续了这一趋势。
请注意,WildFly comes 为“WildFly”和“WildFly Preview”。根据文档:
WildFly 版本 17 - 26 是 Jakarta EE 8。
WildFly 预览版本 22 - 26 是 Jakarta EE 9。
WildFly 和 WildFly 预览版本 27 -30 是 Jakarta EE 10。
在您的具体情况下,您显然有一个 Jakarta EE 8 应用程序和一个 WildFly 25 服务器。因此,只要您选择“WildFly 25”而不是“WildFly Preview 25”,就可以了。验证的一种快速方法是将您的
javax.*
目标 WAR 盲目部署到服务器,并检查它在运行时是否不会在 NoClassDefFoundError
类上引发任何 javax.*
错误。
顺便说一句,支持 Jakarta EE 8 的最新 WildFly 版本是 26,这是目前仍在积极维护的版本(在撰写本文时,26.1.3 仅在 9 天前发布,25.x 已不再维护)一年多了),所以我强烈建议从 WildFly 25 进一步升级到 WildFly 26。
也就是说,您确实应该迁移到
jakarta.*
作为下一步,因为 javax.*
显然是一个死胡同。