8

我对 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 我想知道这两组依赖项的区别。提前谢谢各位。

4

2 回答 2

21

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.glassfishgroupId 下。你会在里面找到javax.facescom.sun.facesjava 包。

那么你应该使用什么来进行开发呢?其实两者都可以用。但推荐的方法是jsf-api-xxx.jar只包含在编译类路径中。因此,您自己的应用程序不依赖com.sun.faces包下的任何类来实现对其他 JSF实现的可移植性。如果您正在使用诸如 GlassFish 之类的应用程序,则容器应该已经在运行时提供了 JSF 实现。您不应将上述 JSF jar 文件与您的 war 或 ear 文件一起打包,因为服务器会提供所有这些文件。如果使用Tomcat等默认不自带JSF实现的容器,则javax.faces-xxx.jar需要在.jsf-api-xxx.jarjsf-impl-xxx.jarWEB-INF/lib

于 2013-03-22T03:34:25.050 回答
0

它们是不同的版本。

  • 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 有很大的不同。

于 2013-03-22T02:43:54.553 回答