2008-10-16 19 views
6

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 cada vez que lo hago, me sale el siguiente error:Eclipse y JSP: java.lang.NoSuchMethodError: javax.servlet.jsp.tagext.TagAttributeInfo. <init> (Ljava/lang/String; ZLjava/lang/String; ZZ) V

 
    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 la mía, señalando la causa del problema es bastante difícil. alguna idea de donde comenzar a buscar?

Respuesta

5

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ó.

0

¿Ha establecido 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.

0

lo más probable es que el plugin 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 tomcat en el eclipse.

0

tuve un problema similar y me había fijado este problema al asegurar que tengo la versión correcta de servlet.jar en la ruta de clase que está siendo tomada por mi solicitud y también había mantenido edad j2ee.jar archivo en el classpath y eso estaba causando el problema principal. Por lo tanto, lo eliminé de la ruta de clases para asegurarme de que utiliza los archivos predeterminados.

+1

Esto solo causará problemas futuros. NUNCA debe incluir bibliotecas específicas del servidor en la biblioteca específica de aplicaciones web como '/ WEB-INF/lib'. NUNCA debe copiar/duplicar archivos JAR específicos del servidor sueltos. 'servlet.jar' es específico de Tomcat. 'j2ee.jar' es específico de Glassfish. No los mezcles. Guárdelos allí donde pertenecen, en la biblioteca del servidor. Todo lo que necesitas hacer es agregar su ruta del sistema de archivos al classpath (ruta de compilación). En Eclipse, todo lo que necesita hacer es integrar el servidor en la vista * Servers * y asociarlo con el proyecto por * Targeted Runtime * en las propiedades del proyecto. – BalusC

0

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 eliminé las carpetas de muelles y muelles en mi repositorio local de maven 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 alaban la magia del classpath.

Cuestiones relacionadas