10

我想在我的应用程序中使用 JSF 2.3,但 WildFly 使用 2.2 的 2 JAR 变体。

Oracle 在这里表示https://javaserverfaces.java.net/2.3/download.html不会发布 2.3 2 JAR 变体。

4

1 回答 1

12

这是手动过程:

  1. javax.faces.jar使用 ZIP 工具提取。您将获得 3 个文件夹com, javax, META-INF
    (注意:在某些版本中,您还会jsf.js在根目录中看到一个文件,但这是一个错误,您应该忽略它,它已经位于META-INF/resources/javax.faces

  2. 使用 ZIP 工具打包comMETA-INF文件夹。jsf-impl.jar

  3. 然后,删除META-INF .MANIFEST.MF

  4. 使用 ZIP 工具打包javaxMETA-INF文件夹。jsf-api.jar

  5. 继续使用这些 JAR:升级 JBoss AS / EAP / WildFly 中的 JSF / Mojarra


对于感兴趣的人,JBoss AS 和 WildFly 在内部对基于 Java EE 的 API 和 impl 文件进行了模块化分离。分离的 JAR 文件jsf-api.jar仍然jsf-impl.jar需要。原因并不是真正的技术,而只是一项额外的服务,迫使开发人员针对正确的库进行编程。在编译期间仅公开 API 模块(通常,通过 IDE 集成插件将它们添加到“构建路径”)。这应该避免初学者意外发现、导入和使用实现类,例如com.sun.faces.*包中的实现类。

从 1.x 版本开始,JSF 实现 Mojarra 就由两个 JAR 文件组成:jsf-api.jarjsf-impl.jar. API JAR 包含javax.faces.*类,实现 JAR 包含com.sun.faces.*类。由于构建系统的更改符合 Java EE Maven 规则,API 和实现类都合并到一个javax.faces.jar文件中,另请参见issue 2028(从 Mojarra 2.1.6 开始,2011 年 12 月)。从 Mojarra 2.3 开始,不再构建分离的 JAR 文件。

于 2016-03-09T19:55:50.443 回答