要开始使用jsf,我需要JSFAPI或JSFPimpl还是两者都需要?为什么不合并?

要开始使用jsf,我需要JSFAPI或JSFPimpl还是两者都需要?为什么不合并?,jsf,jar,Jsf,Jar,我已经开始学习JSF,我想知道在我们开始使用JSF的类路径中应该包含哪些JAR。它是jsfapi还是jsf impl?或者我们必须将两者都包括在内?如果两者都是,那么它们为什么不合并呢?我假设您使用的不是真正的Java EE应用程序服务器,比如、,等等,而是一个基本的JSP/Servlet容器,它确实没有附带JSF,因此您必须手动安装它。否则,就没有必要对罐子大惊小怪了 是jsfapi还是jsf impl?或者我们必须将两者都包括在内 你两者都需要。jsfapi.jar包含api,它几乎只存在

我已经开始学习JSF,我想知道在我们开始使用JSF的类路径中应该包含哪些JAR。它是
jsfapi
还是
jsf impl
?或者我们必须将两者都包括在内?如果两者都是,那么它们为什么不合并呢?

我假设您使用的不是真正的Java EE应用程序服务器,比如、,等等,而是一个基本的JSP/Servlet容器,它确实没有附带JSF,因此您必须手动安装它。否则,就没有必要对罐子大惊小怪了


是jsfapi还是jsf impl?或者我们必须将两者都包括在内

你两者都需要。jsfapi.jar包含api,它几乎只存在抽象类和接口。它是您正在导入并在代码中使用的
javax.faces.*
类型。jsf impl.jar的
jsf impl.jar
包含了实现,这是真正的艰苦工作代码。实现是通过API中的工厂在内部加载的。它是
com.sun.faces.
类,您不应该在代码中直接导入和使用这些类。如果您这样做,那么您将无法切换到不同的JSF实现,例如MyFaces


如果两者都是,为什么它们不合并

存在一个合并的JAR,
javax.faces.JAR
。你可以挑这个而不是两个松动的罐子

另见:

应用服务器提供JSF实现。如果您碰巧使用了一个jar,您就不需要包含额外的文件,除非默认版本不是您所需要的。我发现这个jar的dependency javax.faces-api 2.2名称不同,但它说这是Oracle实现JSF 2.2规范的主POM文件。