2013-03-22 70 views
8

我对javax的区别感到困惑。从jsf-api-2.2.0-m05.jar和jsf-impl-2.2.0-m05.jar中获取faces-2.1.14.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 我想知道这两组依赖关系的区别。 在此先感谢你们。javax.faces-2.1.14.jar与jsf-api-2.2.0-m05.jar和jsf-impl-2.2.0-m05.jar有什么区别

回答

19

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文件,因为服务器会提供所有这些文件。如果您使用的容器默认不带有JSF实现(如Tomcat),则需要在WEB-INF/lib中打包javax.faces-xxx.jar或(jsf-api-xxx.jar + jsf-impl-xxx.jar)。

+1

这是我正在寻找的那种描述和比较。此外,用例特别是最后一段恰恰是困扰着我的问题。谢谢! – royjavelosa 2013-03-22 05:42:52

+0

@royjavelosa很高兴能帮到你 – Lan 2013-03-22 14:12:25

0

它们是不同的版本。

  • javax.faces-2.1.14.jar为2.1.14
  • JSF-API-2.2.0-m05.jar和JSF-IMPL-2.2.0-m05.jar组合JAR文件是2.2.0-m05的单独JAR。

版本之间的差异可以在发行说明中找到,但2.2和2.1是不平凡的不同。