com.sun.faces的差异/平等> jsf-impl和org.glassfish> javax.faces(2.2.4)

Chr*_*phS 6 maven jsf-2

在我的JSF2应用程序中,我在Primefaces(5.1)自动完成时遇到了NPE

org.primefaces.component.autocomplete.AutoCompleteRenderer .encodeSuggestionsAsList(AutoCompleteRenderer.java:492)

我通过替换maven依赖来解决我的问题

<dependency>
    <groupId>com.sun.faces</groupId>
    <artifactId>jsf-impl</artifactId>
    <version>2.2.4</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

通过

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.faces</artifactId>
    <version>2.2.4</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

这让我很困惑.

在搜索项目主页时,我发现了这些maven存储库:

http://mvnrepository.com/artifact/com.sun.faces/jsf-impl/2.2.4
http://mvnrepository.com/artifact/org.glassfish/javax.faces/2.2.4

他们都声称相同的描述并引用与主页相同的URL:

描述:Oracle对JSF 2.2规范的实现(2.2.4)
主页:http://java.sun.com/javaee/javaserverfaces/

有人可以解释这个区别吗?不应该完全一样吗?

提示:我了解太阳和甲骨文的历史.;)

Bal*_*usC 7

com.sun.faces:jsf-impl只包含实现(钻嘴鱼科).它缺乏API.你需要com.sun.faces:jsf-api沿着它.

org.glassfish:javax.faces是包含API和impl的单JAR包(您也可以在文件大小上看到它).

至于你在使用时的具体问题jsf-impl,显然你已经忘记了jsf-api,或者你javax:javaee-web-api实际上在使用像​​Tomcat这样的非Java EE容器时依赖它.

  • @MahmoudSaleh:如果它是相同的版本,那么没有,没有区别.但是自Mojarra 2.3.x以来,分离的api/impl JAR不再可用了.如果你只使用api/impl,那么你就会过时了. (2认同)