我对jsf-api-2.2.0-m05.jar和jsf-impl-2.2.0-m05.jar的javax.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 我想知道这两组依赖关系的区别。 先谢谢你们。
答案 0 :(得分:20)
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.faces
和com.sun.faces
java包。
那么你应该用什么来开发?实际上你可以使用两者。但推荐的方法是仅在编译类路径中包含jsf-api-xxx.jar
。因此,您自己的应用程序不依赖于com.sun.faces
包下的任何类来实现可移植性到其他JSF实现。如果您使用的是GlassFish之类的应用程序,则容器应该已经在运行时提供了JSF实现。您不应该使用war或ear文件打包上述JSF jar文件,因为服务器将提供所有这些文件。如果您使用默认情况下没有JSF实现的容器(如Tomcat),则需要在javax.faces-xxx.jar
中打包jsf-api-xxx.jar
或(jsf-impl-xxx.jar
+ WEB-INF/lib
)。
答案 1 :(得分:0)
它们是不同的版本。
版本之间的差异可以在发行说明中找到,但2.2和2.1非常不同。