我想在我的应用程序中使用 JSF 2.3,但 WildFly 使用 2.2 的 2 JAR 变体。
Oracle 在这里表示https://javaserverfaces.java.net/2.3/download.html不会发布 2.3 2 JAR 变体。
我想在我的应用程序中使用 JSF 2.3,但 WildFly 使用 2.2 的 2 JAR 变体。
Oracle 在这里表示https://javaserverfaces.java.net/2.3/download.html不会发布 2.3 2 JAR 变体。
这是手动过程:
javax.faces.jar
使用 ZIP 工具提取。您将获得 3 个文件夹com
, javax
, META-INF
(注意:在某些版本中,您还会jsf.js
在根目录中看到一个文件,但这是一个错误,您应该忽略它,它已经位于META-INF/resources/javax.faces
)
使用 ZIP 工具打包com
和META-INF
文件夹。jsf-impl.jar
然后,删除META-INF
除.MANIFEST.MF
使用 ZIP 工具打包javax
和META-INF
文件夹。jsf-api.jar
继续使用这些 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.jar
和jsf-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 文件。