【问题标题】:What is the difference between javax.faces-2.1.14.jar from jsf-api-2.2.0-m05.jar and jsf-impl-2.2.0-m05.jarjsf-api-2.2.0-m05.jar 中的 javax.faces-2.1.14.jar 和 jsf-impl-2.2.0-m05.jar 有什么区别
【发布时间】:2013-03-11 18:41:43
【问题描述】:

我对 javax.faces-2.1.14.jar 与 jsf-api-2.2.0-m05.jar 和 jsf-impl-2.2.0-m05.jar 的区别感到困惑 我正在尝试在不使用 maven 的情况下制作一个 jsf 项目,并且在搜索示例时,我看到了不同教程的不同 jar 依赖项。 coreservlets 的教程使用 javax.faces-2.1.14.jar,而我从另一个站点看到的另一个教程使用 2 个 jar 文件 jsf-api-2.2.0-m05.jar 和 jsf-impl-2.2.0- m05.jar 我想知道这两组依赖项的区别。 在此先感谢各位。

【问题讨论】:

    标签: java jsf-2


    【解决方案1】:

    它们是不同的版本。

    • 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 的区别并不大。

    【讨论】:

      【解决方案2】:

      jsf-api-xxx.jar 包含包 java 包 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.facescom.sun.faces java 包。

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

      【讨论】:

      • 这就是我想要的描述和比较。此外,用例尤其是最后一段正是困扰我的问题。谢谢!
      • @royjavelosa 很高兴我能帮上忙
      猜你喜欢
      • 1970-01-01
      • 2012-10-14
      • 1970-01-01
      • 2013-01-10
      • 2011-07-05
      • 2015-07-15
      • 1970-01-01
      • 2014-01-29
      • 2013-06-30
      相关资源
      最近更新 更多