我在 Tomcat 8 中部署服务时遇到问题。出现以下错误:
引起:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;在 org.apache.tomcat.websocket.server.WsServerContainer.(WsServerContainer.java:149) 在 org.apache.tomcat.websocket.server.WsSci.init(WsSci.java:131) 在 org.apache.tomcat.websocket。 server.WsSci.onStartup(WsSci.java:47) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5244) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) … 还有 10 个
方法 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。那么这个错误还有其他原因吗?请帮忙
原文由 Rahman 发布,翻译遵循 CC BY-SA 4.0 许可协议
检查您所有的 Maven(或等效)依赖项,并确保您 - 或者很可能是另一个依赖项 - 没有
javax.servlet / servlet-api
的 pre-3.1 版本,它可能优先于 Tomcat 8 中的内容. 如果您手动部署,请确保您没有手动将任何 servlet-api JAR 复制到 Tomcat 本身。请参阅: https ://stackoverflow.com/a/26232535/954442