Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting NoSuchMethodError:javax.servlet.ServletContext.getVirtualServerName()

I am facing an issue during deployment of a service in Tomcat 8. Getting following error :

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

Method getVirtualServerName was introduced in Servlet 3.1 and after extracting MANIFEST.MF from my servlet-api jar I got following details :

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

Which says that its having 3.1. So is there any other reason for this error? Please help

like image 799
Rahman Avatar asked Jan 22 '16 15:01

Rahman


1 Answers

Check all your Maven (or equivalent) dependencies and make sure that you - or most likely another dependency - are not pulling in a pre-3.1 version of the javax.servlet / servlet-api that may be taking precedence over what's in your Tomcat 8. If you've manually deployed, make sure you haven't manually copied any servlet-api JARs into Tomcat itself.

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

like image 120
Andrew Regan Avatar answered Sep 29 '22 02:09

Andrew Regan