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

新手上路,请多包涵

我在 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 许可协议

阅读 494
1 个回答

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

请参阅: https ://stackoverflow.com/a/26232535/954442

原文由 Andrew Regan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题