如何解决将com.sun.faces与Jakarta EE一起使用
我正在尝试将旧版Java EE应用程序升级到Wildfly服务器上的Jakarta EE 8。由于8尚未将软件包名称交换为jakarta,因此大多数升级都进行得很顺利。但是,我们的某些代码使用的是Oracle com.sun.faces包中的类。这些类似乎包含在Jakarta EE Faces API specification中,但是当我使用以下Maven依赖项时,它们不包含在我们的项目中:
<dependency>
<groupId>jakarta.faces</groupId>
<artifactId>jakarta.faces-api</artifactId>
<version>2.3.2</version>
<scope>provided</scope>
</dependency>
要在类路径中获取它们,我必须使用Oracle依赖项:
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.20</version>
<scope>provided</scope>
</dependency>
很显然,我们希望在某个时候完全放弃使用此软件包,但是我希望有一种方法可以将其包含在我们的Jakarta迁移中。
解决方法
com.sun.faces.*
是Jakarta EE API的不部分。它是Jakarta EE 实现的一部分。更确切地说,这是实际的JSF实现。它的名字是“ Mojarra”。
您确实不需要在pom.xml
中具有依赖关系即可独立于JEE实现(即,无需任何代码即可将您的Web应用程序部署到任何兼容JEE的服务器上变化)。但是,如果在删除代码时未编译,那么您显然对它有一定的依赖性,例如硬编码的导入或超类,引用了com.sun.faces.*
包。这确实通常是不正确的。
解决方案应该简单明了:
- 删除该Mojarra依赖项
- 查找所有编译错误
- 使用标准的JSF API方法一一修复它们
- 如果找不到任何人,请研究或询问堆栈溢出
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。