Библиотека NoClassDefFoundError Fop при развертывании на сервере Prod — Jdeveloper 11 Oracle ADF

#noclassdeffounderror #oracle-adf #jdeveloper #apache-fop

#ошибка noclassdeffounderror #oracle-adf #jdeveloper #apache-fop

Вопрос:

Oracle Jdeveloper (версия 11.1.1.6.0) создает приложение ADF, которое генерирует PDF-файл с использованием библиотеки Apache FOP. Мое приложение запускает локальный веб-сервер. Но при развертывании на рабочем сервере ниже отображается исключение NoClassDefFoundError и не удается сгенерировать файл PDF.

Панель навигатора приложений
Диалоговое окно с ошибкой при нажатии кнопки ADF для создания PDF

Вывод исключения:

 <code>
javax.el.ELException: java.lang.NoClassDefFoundError: org/apache/avalon/framework/configuration/ConfigurationException
    at com.sun.el.parser.AstValue.invoke(AstValue.java:191)
    at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
    ...
    ...
Caused by: java.lang.NoClassDefFoundError: org/apache/avalon/framework/configuration/ConfigurationException
    at org.apache.fop.apps.FopFactory.<init>(FopFactory.java:153)
    at org.apache.fop.apps.FopFactory.newInstance(FopFactory.java:177)
    ...
    ...
Caused by: java.lang.ClassNotFoundException: org.apache.avalon.framework.configuration.ConfigurationException
    ...
    ...
</code>

  

Ответ №1:

Ошибка NoClassDefFoundError, вызванная ClassNoFoundException, указывает на отсутствие библиотеки на сервере. Проверили ли вы свой артефакт развертывания (EAR), содержит ли он все необходимые банки FOP? Если все jar являются частью EAR (или, лучше, WAR внутри EAR), вам нужно указать серверу Weblogic сначала загрузить jar из вашего развертывания, прежде чем просматривать jar, которые уже есть на сервере. См. https://tompeez.wordpress.com/2015/06/06/pitfalls-when-using-newer-versioned-libraries-than-shipped-with-jdeveloper-or-weblogic-server / для получения дополнительной информации об этом.