来自jsf-api-2.2.0-m05.jar的javax.faces-2.1.14.jar和jsf-impl-2.2.0-m05.jar之间的区别是什么?

roy*_*osa 8 java jsf-2

我对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我想知道这两组依赖关系的区别.先谢谢你们.

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

那么你应该用什么来开发?实际上你可以使用两者.但推荐的方法是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.