Файл WAR, развернутый в TomEE Plus, не отправляющий электронные письма: ошибка нарушения ограничений загрузчика

Я развернул приложение EJB (предоставляется как .war файл) в TomEE Plus 7.1.0.

Он работает нормально, но было замечено, что электронные письма не отправлялись.

Я исследовал файл журнала на logs/tomee-stderr.[date].log и нашел это:

java.lang.LinkageError: нарушение ограничения загрузчика: загрузчик (экземпляр java/net/URLClassLoader) ранее инициировал загрузку для другого типа с именем "javax/mail/Session"

сопровождаемый очень, очень длинной (>500 тыс. строк) трассировкой стека.

Я нашел связанный вопрос ( java.lang.LinkageError: нарушение ограничения загрузчика: ранее инициированная загрузка для другого типа с именем "javax/mail/Session"), и сказано, что решение состоит в маркировке зависимости от javamail как "предоставленная" зависимость, но я понимаю, что это должно быть сделано в файле проекта Maven, к которому у меня нет доступа.

Я могу редактировать содержимое каталога ROOT по своему усмотрению (и я попытался удалить два файла, а именно, mail.jar а также mail-1.4.4.jar, от WEB-INF/lib каталог, но безрезультатно); Я верю, что могу также отредактировать файл.war с помощью 7-zip; и, наконец, я могу изменить любую конфигурацию на сервере. Но я не могу редактировать исходный код приложения и / или перекомпилировать его.

(В качестве потенциально релевантной информации у меня есть доступ для чтения к исходному коду, и он, похоже, не использует Maven - существование .project файл предполагает, что это проект Eclipse.)

Файл с именем geronimo-javamail_1.4_mail-1.9.0-alpha-2.jar является частью TomEE и находится в lib папка.

Учитывая мои ограничения (нет maven, нет компиляции - существующий файл WAR должен работать), как можно решить эту ошибку?

[Редактировать 1]

  • Я удалил оба mail.jar а также mail-1.4.4.jar из файла WAR (с 7-zip) и повторно развернут, сбросил файл журнала, но ошибка остается той же.

  • Я пытался удалить geronimo-javamail_1.4_mail-1.9.0-alpha-2.jar от TomEE lib папку, но TomEE не запускается.

1 ответ

Решение

Кажется, что есть еще файл JAR, который содержит класс javax.mail.Session? Извлеките все WEB-INF/lib в папку и найдите содержимое всех файлов jar, если в нем содержится строка "javax/mail/Session"

Другие вопросы по тегам