instalar for descargar java servlets tomcat8

java - for - tomcat 8 download



Obteniendo NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName() (8)

Tengo un problema durante la implementación de un servicio en Tomcat 8. Obtengo el siguiente error:

Causado por: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName () Ljava / lang / String; en org.apache.tomcat.websocket.server.WsServerContainer. (WsServerContainer.java:149) en org.apache.tomcat.websocket.server.WsSci.init (WsSci.java:131) en org.apache.tomcat.websocket. server.WsSci.onStartup (WsSci.java:47) en org.apache.catalina.core.StandardContext.startInternal (StandardContext.java:5244) en org.apache.catalina.util.LifecycleBase.start (LifecycleBase.java:150) ... 10 más

El método getVirtualServerName se introdujo en Servlet 3.1 y después de extraer MANIFEST.MF de mi jar de servlet-api obtuve los siguientes detalles:

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

Lo que dice que tiene 3.1. Entonces, ¿hay alguna otra razón para este error? Por favor ayuda


Después de un gran dolor y examinar todas estas respuestas de , lo único que terminó funcionando para mí fue degradar de tomcat8 a tomcat7. Sé que esta no es una solución ideal, y tal vez fue solo una nueva instalación de tomcat que resolvió mi problema. Si todo lo demás falla, dale una oportunidad.


El método getVirtualServerName se ha agregado en ServletContext en Servlet 3.1. Encuentre el método getVirtualServerName del documento de getVirtualServerName

Este problema puede tener al menos 3 causas:

  1. su versión de servlet es anterior a 3.1.

  2. otro jar tiene la versión anterior de servlet que 3.1.

  3. su versión de tomcat es anterior a 8

para resolverlo, puedes probar de la siguiente manera.

I. para comprobar su pom.xml si hay el siguiente código.

<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency>

si su pom.xml tiene el código anterior, aún tendría ese problema. puedes hacer la segunda forma.

II para comprobar que su otro jar tiene referencia al javax.servlet-api jar. por ejemplo, el org.apache.santuario se refiere al javax.servlet-api jar. el pom.xml:

<dependency> <groupId>org.apache.santuario</groupId> <artifactId>xmlsec</artifactId> <version>1.4.3</version> </dependency>

pero cuando observa las dependencias de Maven, se refiere al javax.servlet-api jar cuya versión es 2.3 anterior a 3.1.

por lo que debe excluir la versión 2.3. pom.xml:

<!-- exclude servlet-api 2.3 jar--> <dependency> <groupId>org.apache.santuario</groupId> <artifactId>xmlsec</artifactId> <version>1.4.3</version> <exclusions> <exclusion> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> </exclusion> </exclusions> </dependency> <!-- servlet-api 3.1 version has getVirtualServerName() --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency>

III. Spring Boot ejecuta el tomcat 7. predeterminado, así que defina su versión 8 de Tomcat en lugar de Tomcat 7. Agregue el código pom.xml:

<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <tomcat.version>8.5.5</tomcat.version> </properties>


Esto seguramente tiene algo que ver con la versión de javax.servlet y la versión de Tomcat.

En mi caso, desapareció cuando declaró la dependencia de javax.servlet en gradle sin versión. Me gusta esto -

compile(''javax.servlet:servlet-api'')


Si ha usado esta dependencia:

compile(''javax.servlet:servlet-api'')

Entonces por favor excluya de la siguiente manera:

<dependency> <groupId>com.google.oauth-client</groupId> <artifactId>google-oauth-client-jetty</artifactId> <version>1.23.0</version> <exclusions> <exclusion> <artifactId>servlet-api</artifactId> <groupId>org.mortbay.jetty</groupId> </exclusion> </exclusions> </dependency>


Spring boot ejecutará tomcat 7 por defecto, debe anular maven build tomcat.version en su pom.xml. Consulte a continuación para ejecutar tomcat 8.0.30

<properties> <tomcat.version>8.0.30</tomcat.version> </properties>

Debería solucionar su problema.


Tuve este error en IntelliJ con maven después de actualizar IntelliJ.

Podría ejecutar las pruebas con maven pero no desde mi IDE.

./idea el problema eliminando los archivos ./idea y project.iml y ./idea cargar el proyecto.


Verifique todas sus dependencias de Maven (o equivalentes) y asegúrese de que usted, o probablemente otra dependencia, no esté utilizando una versión anterior a 3.1 de javax.servlet / servlet-api que pueda tener prioridad sobre lo que está en su Tomcat 8 Si se ha implementado manualmente, asegúrese de no haber copiado manualmente ningún JAR de servlet-api en Tomcat.

Ver: https://.com/a/26232535/954442


Solucionado En mi mac con java 8 estaba enfrentando un problema con Tomcat descargado del sitio y descomprimirlo.

Mi problema se resolvió porque había un archivo servlet-api.jar adicional que se estaba recogiendo. Provenía de /Library/Java/Extensions/servlet-api.jar

Para encontrarlo en su sistema, puede usar sudo find / -name servlet-api.jar

Lo eliminó haciendo una copia de seguridad en otro lugar.

Estaba siguiendo esto para la instalación https://gist.github.com/ddanailov-nmdp/c97aba2ca926b9627f6b4f7174083a32