我最近在本地Windows 10桌面上安装了WebLogic 12.1.3。创建了一个非常小的webapp,在我添加beans.xml之前,它运行良好。
添加bean.xml并启动服务器,我得到以下错误:weblogic.management.DeploymentException:java.lang.NoSuchMethodError:com.sun.faces.util.Util.isCdiOneOneOrGreater()Z
我可以理解这与JSF版本中的不匹配有关。然后,我开始搜索,偶然发现了BalusC的这个漂亮答案。
How to find out the current version of Mojarra which my WebLogic is using?
上面的答案说:“另一种方法是浏览WebLogic安装的/ wlserver / modules文件夹中的JSF模块。在我的12c安装中,文件名说是glassfish.jsf_1.0.0.0_2-1-20.jar,该文件又标识了Mojarra 2.1.20“。
因此,我检查了一下我的modules文件夹中的内容,然后得到了1个以上的jsf jar。我的问题(最好是BalusC:-,但也可以帮助任何人)是
-是否可以在modules文件夹中包含多个与JSF相关的jar。
-如果此多个JSF jar是错误的原因?
-是否可以清理(手动删除)此“ modules”文件夹中的文件以具有与JSF相关的文件的一个版本?
注意:所有这些东西都是在安装12.1.3时即用的。
非常感谢。
答案 0 :(得分:0)
在Web应用程序中使用JSF和JSTL: https://docs.oracle.com/middleware/1213/wls/WBAPP/configurejsfandjtsl.htm#WBAPP197
这取决于您是否嵌入JSF jar。 我认为您需要升级JSF,嵌入jar并使用Filtering Classloading。
<prefer-application-packages>
<package-name>javax.faces.*</package-name>
<package-name>com.sun.faces.*</package-name>
<package-name>com.bea.faces.*</package-name>
</prefer-application-packages>
<prefer-application-resources>
<resource-name>javax.faces.*</resource-name>
<resource-name>com.sun.faces.*</resource-name>
<resource-name>com.bea.faces.*</resource-name>
<resource-name>META-INF/services/javax.servlet.ServletContainerInitializer</resource-name>
<resource-name>META-INF/services/com.sun.faces.*</resource-name>
</prefer-application-resources>
它看起来(jboss)类似于:java.lang.NoSuchMethodError: com.sun.faces.util.Util.isCdiOneOneOrGreater()Z