java.lang.NoSuchMethodError: javax.servlet.http.Cookie.setHttpOnly (Z) V - PullRequest
3 голосов
/ 28 марта 2019

Я использую сервер приложений weblogic 10.3.6.0 для развертывания приложения. после развертывание одного из приложений, использующих JDK8. во время выполнения я получил следующую ошибку.

java.lang.NoSuchMethodError: javax.servlet.http.Cookie.setHttpOnly (Z) V

содержимое файла dependencies.gradle выглядит следующим образом

предоставляемый компиляцией 'javax.servlet: javax.servlet-api: 3.0.1'

В чем причина этой ошибки?

Ответы [ 2 ]

3 голосов
/ 28 марта 2019

Cookie.setHttpOnly() доступно с версии Servlet 3.0.Вы развертываете в WebLogic 10, которая предоставляет только Servlet 2.5.

Обратите внимание, что ваш проект компилируется с учетом зависимости API, а не фактической реализации во время выполнения.Это правильная настройка проекта, не меняйте ее.Однако вы должны убедиться, что API-интерфейсы, выбранные вами для компиляции, предоставляются во время выполнения путем развертывания на правильном сервере.

1 голос
/ 30 марта 2019

Как уже говорили другие, вы компилируете неверный файл сервлета для вашей версии weblogic. Если вы хотите продолжать использовать weblogic 10, вы должны изменить на

providedCompile 'javax.servlet:javax.servlet-api:2.5'

Как только вы сделаете это, я предполагаю, что вы получите ошибку компиляции для Cookie.setHttpOnly().

Из интереса, почему вы используете weblogic? Существует много контейнеров сервлетов с открытым исходным кодом, которые намного лучше, чем weblogic. Weblogic не соответствует тем же стандартам, что и остальные контейнеры сервлетов.

...