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

时间:2019-03-28 08:10:40

标签: java gradle weblogic-10.x

我正在使用weblogic 10.3.6.0应用程序服务器来部署应用程序。后 部署使用JDK8的应用程序之一。在运行时出现以下错误。

  

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

dependencies.gradle 文件的

内容如下

  

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

此错误的原因是什么?

2 个答案:

答案 0 :(得分:3)

从Servlet 3.0开始,

Cookie.setHttpOnly()可用。您将部署到仅提供Servlet 2.5的WebLogic 10。

请注意,您的项目是根据API依赖关系而不是实际的运行时实现进行编译的。这是正确的项目设置,请不要更改。但是,必须通过部署到正确的服务器来确保在运行时中提供了选择用于编译的API。

答案 1 :(得分:1)

正如其他人所说,您正在针对您的weblogic版本针对错误的servlet jar进行编译。如果您想继续使用weblogic 10,则应更改为

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

执行此操作后,我猜您会遇到Cookie.setHttpOnly()的编译错误。

出于兴趣,您为什么要使用weblogic?有许多免费/开源servlet容器远比weblogic更好。 Weblogic与其余servlet容器的标准不同。