415 Статус ответа HTTP при получении ответа API для проекта Java с явно включенными файлами JARJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 415 Статус ответа HTTP при получении ответа API для проекта Java с явно включенными файлами JAR

Сообщение Anonymous »

У меня есть простое приложение из Джерси, которое в настоящее время работает. Мне нужно добавить возможность отправки электронной почты, поэтому я использую код из другого функционального приложения. Это приложение использует пакет javax.mail (мы все еще используем более старую версию Tomcat, поэтому не можем использовать jakarta.mail).
Я включаю зависимость в pom.xml следующим образом:

Код: Выделить всё

com.sun.mail
javax.mail
1.6.2
provided

На данный момент я опускаю код реализации почтовой программы, поскольку считаю, что он не имеет отношения к данной конкретной проблеме.
Я упаковываю Java-приложение, создаю образ Docker, а затем развертываю его в нашем стеке Kubernetes. Когда я обращаюсь к конечной точке API, я получаю ошибку журнала: java.lang.NoClassDefFoundError: javax/mail/Address. Кажется, это указывает на то, что зависимость javax.mail не включена.
Моя первая попытка — изменить область действия указанной выше зависимости с предоставленной на компиляционную, чтобы сборка Maven включала пакет. Однако когда я упаковываю, собираю, развертываю API и получаю доступ к нему, как указано выше, я не получаю ошибок журнала, а вместо этого в ответе API отображается код состояния 415.

Код: Выделить всё

HTTP/1.1 415
Date: Wed, 11 Feb 2026 16:20:31 GMT
Server: This space intentionally left blank.
Strict-Transport-Security: max-age=63072000
Content-Type: text/html;charset=utf-8
Content-Language: en
Content-Length: 457
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Для второй попытки я возвращаю изменение области действия с «компиляции» обратно на «предоставленное». Я копирую файлы JAR из моего функционального проекта в каталог lib моего рабочего проекта. Я знаю, что версия в pom.xml не соответствует версии в JAR, но это то, что есть в функциональном проекте, поэтому я пока оставляю все как есть.

Код: Выделить всё

$ ls -1 lib
activation-1.1.1.jar
javax.mail-1.4.5.jar
Я добавляю в файл Dockerfile строку, чтобы скопировать содержимое папки lib в папку lib Tomcat:

Код: Выделить всё

COPY --chown=tomcat:tomcat lib /usr/local/tomcat/lib
Я упаковываю, собираю, развертываю, затем помещаю в контейнер и подтверждаю, что два JAR-файла, указанные выше, включены в каталог lib контейнера:

Код: Выделить всё

$ find lib  -regex ".*activation.*" -o -regex ".*javax.*"
lib/activation-1.1.1.jar
lib/javax.mail-1.4.5.jar
Когда я обращаюсь к API, я снова получаю код ответа 415.
Что может быть причиной этой проблемы?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ct-with-ex
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»