java.lang.NoSuchMethodException: нет такого доступного метода: addRenderKitClass() для объекта: org.apache.myfaces.config.impl.digester.elements.RenderKit

Получил исключение «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.


person user656449    schedule 23.04.2013    source источник


Ответы (1)


Я только что столкнулся с этой же проблемой. Похоже, это вызвано тем, что некоторые файлы Faces-config.xml в WAR/EAR не соответствуют версии, ожидаемой сервером (2.0 для WAS 8).

В нашем сценарии это НЕ ДОЛЖНО быть проблемой, поскольку мы связываем нашу собственную версию JSF с WAR и имеем политику загрузчика классов как для EAR, так и для WAR, содержащихся в этом EAR, сначала установленном на локальный загрузчик классов, а связанная версия JSF — 1.2. . Однако удаление всей информации о версии и DTD из заголовка файлов Faces-config.xml решило проблему для нас.

person user709667    schedule 17.06.2013