【问题标题】:java.lang.NoSuchMethodException: No such accessible method: addRenderKitClass() on object: org.apache.myfaces.config.impl.digester.elements.RenderKitjava.lang.NoSuchMethodException:没有这样的可访问方法:对象上的 addRenderKitClass():org.apache.myfaces.config.impl.digester.elements.RenderKit
【发布时间】:2013-04-23 07:31:52
【问题描述】:

在将 myfaces 1.2 应用程序部署到 websphere 8.0 时出现“java.lang.NoSuchMethodException:没有这样的可访问方法:对象上的 addRenderKitClass():org.apache.myfaces.config.impl.digester.elements.RenderKit”异常。似乎类似于https://www.ibm.com/developerworks/community/forums/html/topic?id=77777777-0000-0000-0000-000014782514

看起来它是由从不同的 jsf 库加载的 RenderKit 和 DigesterFacesConfigUnmarshallerImpl 引起的。运行带有“详细类加载”的服务器证实了这一点:

me@mycomp:/opt/IBM/WebSphere/AppServer/profiles/PROF1/logs/server1# grep org.apache.myfaces.config.impl.digester.elements.RenderKit native_stderr.log 
class load: org.apache.myfaces.config.impl.digester.elements.RenderKit from: file:/opt/IBM/WebSphere/AppServer/plugins/com.ibm.ws.jsf.myfaces.jar
class load: org.apache.myfaces.config.impl.digester.elements.RenderKit from: file:/opt/IBM/WebSphere/AppServer/profiles/PROF1/installedApps/myNode03Cell/mnu-ear.ear/myapp.war/WEB-INF/lib/myfaces-impl-1.2.5.jar
class load: org.apache.myfaces.config.impl.digester.elements.RenderKit from: file:/opt/IBM/WebSphere/AppServer/profiles/PROF1/installedApps/myNode03Cell/mnu-ear.ear/myapp.war/WEB-INF/lib/myfaces-impl-1.2.5.jar
class load: org.apache.myfaces.config.impl.digester.elements.RenderKit from: file:/opt/IBM/WebSphere/AppServer/profiles/PROF1/installedApps/myNode03Cell/mnu-ear.ear/myapp.war/WEB-INF/lib/myfaces-impl-1.2.5.jar

然后

my@mycomp:/opt/IBM/WebSphere/AppServer/profiles/PROF1/logs/server1# grep DigesterFacesConfigUnmarshallerImpl native_stderr.log 
class load: org.apache.myfaces.config.impl.digester.DigesterFacesConfigUnmarshallerImpl from: file:/opt/IBM/WebSphere/AppServer/plugins/com.ibm.ws.jsf.myfaces.jar

因此 DigesterFacesConfigUnmarshallerImpl 仅从 IBM 的 jsf 加载,而 RendererKit 从所有可能的位置加载。

所以问题是如何从自定义 jsf 库中加载 DigesterFacesConfigUnmarshallerImpl。

【问题讨论】:

    标签: myfaces websphere-8


    【解决方案1】:

    我刚刚遇到了同样的问题。这似乎是由于 WAR/EAR 中的某些 faces-config.xml 文件不符合服务器期望的版本(从 WAS 8 开始为 2.0)造成的。

    在我们的场景中,这应该不是问题,因为我们将我们自己的 JSF 版本与 WAR 捆绑在一起,并将 EAR 和该 EAR 中包含的 WAR 的类加载器策略首先设置为本地类加载器,然后捆绑的 JSF版本是1.2。但是,从 faces-config.xml 文件的标题中删除所有版本和 DTD 信息为我们解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      • 2016-03-31
      • 2019-11-07
      • 2017-12-20
      • 2017-09-23
      • 1970-01-01
      相关资源
      最近更新 更多