java - 获取 NoSuchMethodError :javax. servlet.ServletContext.getVirtualServerName()

标签 java servlets tomcat8

我在 Tomcat 8 中部署服务时遇到问题。出现以下错误:

Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String; at org.apache.tomcat.websocket.server.WsServerContainer.(WsServerContainer.java:149) at org.apache.tomcat.websocket.server.WsSci.init(WsSci.java:131) at org.apache.tomcat.websocket.server.WsSci.onStartup(WsSci.java:47) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5244) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 10 more

方法 getVirtualServerName 是在 Servlet 3.1 中引入的,在从我的 servlet-api jar 中提取 MANIFEST.MF 后,我得到了以下详细信息:

Specification-Title: Java API for Servlets 
Specification-Version: 3.1 
Specification-Vendor: Sun Microsystems, Inc. 
Implementation-Title: javax.servlet 

这说它有 3.1。那么这个错误还有其他原因吗?请帮忙

最佳答案

检查您的所有 Maven(或等效)依赖项,并确保您(或很可能是另一个依赖项)没有引入 3.1 之前版本的 javax.servlet/servlet-api可能优先于 Tomcat 8 中的内容。如果您已手动部署,请确保您没有手动将任何 servlet-api JAR 复制到 Tomcat 本身中。

见:https://stackoverflow.com/a/26232535/954442

关于java - 获取 NoSuchMethodError :javax. servlet.ServletContext.getVirtualServerName(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34950164/

相关文章:

java - 单独使用时正则表达式环视如何工作

java - 获取耗时并重置它的正确方法是什么

java - 在服务器tomcat上运行servlet时eclipse出现404错误

java - JSF 使用的是 JSP 吗?

java - 为什么我的 servlet 程序中出现空白页

java - Spring Boot 不在 Tomcat 实例中启动

java - 格式化json日期

java - 更改 Android Studio 中的默认 LAUNCHER Activity

tomcat8 - 如何在嵌入式tomcat中配置阀门?

linux - Tomcat8 正在运行,但状态为 Tomcat servlet 引擎未运行