Получил исключение «java.lang.NoSuchMethodException: нет такого доступного метода: addRenderKitClass() для объекта: org.apache.myfaces.config.impl.digester.elements.RenderKit» при развертывании приложения myfaces 1.2 в websphere 8.0. Похоже на https://www.ibm.com/developerworks/community/forums/html/topic?id=77777777-0000-0000-0000-000014782514.
Похоже, это вызвано RenderKit и DigesterFacesConfigUnmarshallerImpl, загруженными из разных библиотек jsf. Запуск сервера с "подробной загрузкой класса" подтверждает это:
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 загружается только из jsf IBM, а RendererKit загружается из всех возможных мест.
Итак, вопрос в том, как загрузить DigesterFacesConfigUnmarshallerImpl из пользовательской библиотеки jsf.