我正在尝试将 Wildfly 服务器上的旧版 Java EE 应用程序升级到 Jakarta EE 8。由于 8 尚未将软件包名称交换为 jakarta,因此大部分升级都很顺利。但是,我们的一些代码使用 Oracle com.sun.faces 包中的类。这些类似乎包含在 Jakarta EE Faces API规范中,但当我使用以下 Maven 依赖项时,它们不包含在我们的项目中:
<dependency>
<groupId>jakarta.faces</groupId>
<artifactId>jakarta.faces-api</artifactId>
<version>2.3.2</version>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
为了将它们放入类路径中,我必须使用 Oracle 依赖项:
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.20</version>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
显然,我们希望在某个时候完全放弃使用这个包,但我希望有一种方法可以将其包含在我们的雅加达迁移中。
它com.sun.faces.*不是Jakarta EE API 的一部分。它是 Jakarta EE实现的一部分。更准确地说,它是实际的 JSF 实现。它的名字叫“莫贾拉”。
您确实不需要为了pom.xml独立于 JEE 实现而依赖它(即为了能够将您的 web 应用程序部署到任何 JEE 兼容服务器而无需更改任何代码)。然而,如果代码在您删除它时无法编译,那么您显然在某个地方对它有硬依赖,例如硬编码的导入或引用 package.json 的超类com.sun.faces.*。这确实通常是不正确的。
解决方案应该很简单:
| 归档时间: |
|
| 查看次数: |
2192 次 |
| 最近记录: |