我试图在Wildfly服务器上将遗留的Java应用程序升级到Jakarta 8。由于8没有将包名交换给雅加达,所以大部分升级工作进展顺利。但是,我们的一些代码正在使用Oracle的com.sun.faces包中的类。这些类似乎包含在Jakarta 规格说明中,但当我使用以下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>显然,我们想在某一时刻完全放弃使用这个包,但我希望有一种方法将其包括在我们的雅加达迁移中。
发布于 2020-10-05 06:56:29
com.sun.faces.*是Jakarta的而不是的一部分。它是雅加达EE implementation.的一部分更确切地说,这是实际的JSF实现。它的名字是"银鲈“。
您确实不应该需要在您的pom.xml中对它具有依赖关系,这样才能独立于JEE实现(也就是说,为了能够将您的JEE应用程序部署到任何与JEE兼容的服务器上,而不需要任何代码更改)。但是,如果代码在删除时没有编译,那么显然在某个地方有一个硬依赖项,例如引用com.sun.faces.*包的硬编码导入或超类。这通常是不正确的。
解决办法应该是直截了当:
https://stackoverflow.com/questions/64201991
复制相似问题