我在 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 本身中。
关于java - 获取 NoSuchMethodError :javax. servlet.ServletContext.getVirtualServerName(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34950164/