我使用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'
这个错误背后的原因是什么?
自Servlet 3.0以来,Cookie.setHttpOnly()
可用。您正在部署到仅提供Servlet 2.5的WebLogic 10。
请注意,您的项目是针对API依赖性而不是实际的运行时实现进行编译的。这是正确的项目设置,不要更改它。但是,必须确保通过部署到正确的服务器,在运行时中提供了为编译选择的API。
正如其他人所说,你正在为你的weblogic版本编译错误的servlet jar。如果您想继续使用weblogic 10,那么您应该更改为
providedCompile 'javax.servlet:javax.servlet-api:2.5'
一旦你这样做,我猜你会得到Cookie.setHttpOnly()
的编译错误。
出于兴趣,你为什么要使用weblogic?有许多免费/开源servlet容器比weblogic好得多。 Weblogic不符合与其他servlet容器相同的标准。