myfaces 1.2 アプリケーションを Websphere 8.0 にデプロイしているときに、「java.lang.NoSuchMethodException: No suchaccessible method: addRenderKitClass() on object: 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が原因のようです。「Verbose class loading」でサーバーを実行すると、次のことが確認されます。
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 は可能なすべての場所からロードされます。
したがって、問題は、DigesterFacesConfigUnmarshallerImpl をカスタム jsf ライブラリからロードする方法です。