我对 jsf-api-2.2.0-m05.jar 和 jsf-impl-2.2.0-m05.jar 的 javax.faces-2.1.14.jar 的区别感到困惑我正在尝试制作一个不使用的 jsf 项目maven,在搜索示例时,我看到了不同教程的不同 jar 依赖项。coreservlets的教程使用 javax.faces-2.1.14.jar,而我从另一个站点看到的另一个教程使用 2 个 jar 文件 jsf-api-2.2.0-m05.jar 和 jsf-impl-2.2.0-m05。 jar 我想知道这两组依赖项的区别。提前谢谢各位。
2 回答
jsf-api-xxx.jar
包含在包 java package 下的类javax.faces
。这个 jar 中的类是 JSF 规范定义的标准 API 的实现。jsf-impl-xxx.jar
包含在 java 包下的类com.sun.faces
,正如 java 包所示,它是 Sun 自己的 JSF 实现类。
实际上将javax.faces-xxx.jar
前两个 jar 文件合并在一起。在 Maven 存储库中,它位于org.glassfish
groupId 下。你会在里面找到javax.faces
和com.sun.faces
java 包。
那么你应该使用什么来进行开发呢?其实两者都可以用。但推荐的方法是jsf-api-xxx.jar
只包含在编译类路径中。因此,您自己的应用程序不依赖com.sun.faces
包下的任何类来实现对其他 JSF实现的可移植性。如果您正在使用诸如 GlassFish 之类的应用程序,则容器应该已经在运行时提供了 JSF 实现。您不应将上述 JSF jar 文件与您的 war 或 ear 文件一起打包,因为服务器会提供所有这些文件。如果使用Tomcat等默认不自带JSF实现的容器,则javax.faces-xxx.jar
需要在.jsf-api-xxx.jar
jsf-impl-xxx.jar
WEB-INF/lib
它们是不同的版本。
- javax.faces-2.1.14.jar 是 2.1.14 的组合 JAR 文件
- jsf-api-2.2.0-m05.jar 和 jsf-impl-2.2.0-m05.jar 是 2.2.0-m05 的单独 JAR。
版本之间的差异可以在发行说明中找到,但是 2.2 和 2.1 有很大的不同。