Eclipse y JSP: java.lang.NoSuchMethodError: javax.servlet.jsp.tagext.TagAttributeInfo.<Init>(Ljava/lang/String; ZLjava/lang/String; ZZ) V
eclipse-3.4 (5)
Estoy usando Eclipse 3.4 con WTP 3.0.2 y ejecutando un proyecto web dinámico bastante grande. He configurado el proyecto para que pueda acceder a él en http://127.0.0.1:8080/share/, pero siempre que lo hago, aparece el siguiente error:
java.lang.NoSuchMethodError: javax.servlet.jsp.tagext.TagAttributeInfo.(Ljava/lang/String;ZLjava/lang/String;ZZ)V at org.apache.jasper.compiler.TagLibraryInfoImpl.createAttribute(TagLibraryInfoImpl.java:572) at org.apache.jasper.compiler.TagLibraryInfoImpl.createTagInfo(TagLibraryInfoImpl.java:401) at org.apache.jasper.compiler.TagLibraryInfoImpl.parseTLD(TagLibraryInfoImpl.java:248) at org.apache.jasper.compiler.TagLibraryInfoImpl.(TagLibraryInfoImpl.java:162) at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:423) at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:492) at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1552) at org.apache.jasper.compiler.Parser.parse(Parser.java:126) at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:211) at org.apache.jasper.compiler.ParserController.parse(ParserController.java:100) at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:155) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:295) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:276) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:264) at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Unknown Source)
Como ninguno de los archivos anteriores es mío, señalar la causa del problema es bastante difícil. alguna idea de donde comenzar a buscar?
¿Estableciste una ruta Tomcat en "Preferencias-> Tomcat-> Avanzado-> Tomcat base"?
Intenta limpiar esa ruta (volviendo a la configuración predeterminada) y comprueba si eso resuelve el problema.
Terminé respondiendo mi propia pregunta: el problema era que entre los archivos JAR necesarios que había agregado a Tomcat había un servlet.jar en conflicto. Cuando eliminé esto, el error desapareció.
Tuve el mismo problema al ejecutar Eclipse Helios, con Maven manejando dependencias y utilizando Jetty como servidor web. Después de actualizar a Spring 3.1 de repente tuve este problema, pero solo en mi máquina de desarrollo local.
Primero borré las carpetas de muelles y muelles en mi repositorio maven local y actualicé las dependencias, pero eso no mejoró la situación.
Luego borré las carpetas servlet-api y servlet-api-2.5 que vienen con embarcadero (pero dejando todo lo demás), lo hice funcionar.
Todos saludan la magia del classpath.
Tuve un problema similar y solucioné este problema asegurándome de que tengo la versión correcta de servlet.jar en el classpath que está siendo tomado por mi aplicación y también mantuve el viejo archivo J2EE.jar en el classpath y eso estaba causando el principal problema. Por lo tanto, lo eliminé de la ruta de clases para asegurarme de que utiliza los archivos predeterminados.
lo más probable es que el plugin de tomcat en el eclipse cause el problema de conflicto. Logro resolver el problema obteniendo el mismo archivo jar de versión y anulándolo en el plugin de tomcat en el eclipse.