2013-04-23 313 views
1

Got“java.lang.NoSuchMethodException:No such accessible method:addRenderKitClass( )在将myfaces 1.2应用程序部署到websphere 8.0时出现异常:org.apache.myfaces.config.impl.digester.elements.RenderKit“异常。似乎与https://www.ibm.com/developerworks/community/forums/html/topic?id=77777777-0000-0000-0000-000014782514类似。java.lang.NoSuchMethodException:No such accessible method:addRenderKitClass()on object:org.apache.myfaces.config.impl.digester.elements.RenderKit

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

[email protected]:/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 

然后

[email protected]:/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。

回答

-1

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

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

相关问题