2008-10-16 2 views
6

Ich benutze Eclipse 3.4 mit WTP 3.0.2 und verwende ein relativ großes dynamisches Webprojekt. Ich habe das Projekt so einrichten, dass ich es auf http://127.0.0.1:8080/share/ zugreifen kann, aber wann immer ich tue, bekomme ich folgende Fehlermeldung:Eclipse und 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) 

Da keines der oben genannten Dateien meinen eigenen ist, die Ursache des Problems Hinweis auf ist ziemlich hart. Irgendwelche Ideen, um anzufangen, zu schauen?

Antwort

5

Am Ende beantwortete ich meine eigene Frage: Das Problem war, dass unter den notwendigen JARs, die ich Tomcat hinzugefügt hatte, ein widersprüchliches servlet.jar war. Als ich das entfernte, verschwand der Fehler.

0

Haben Sie in "Einstellungen-> Tomcat-> Advanced-> Tomcat base" einen Tomcat-Pfad festgelegt?

Versuchen Sie, diesen Pfad zu bereinigen (um zur Standardkonfiguration zurückzukehren), und prüfen Sie, ob das das Problem löst.

0

höchstwahrscheinlich das tomcat plugin in der eclipse verursachen das konfliktproblem, ich schaffe es, das problem zu lösen, indem ich die gleiche version jar datei und überschreibe es im tomcat plugin in der eclipse.

0

Ich hatte ähnliches Problem und ich hatte dieses Problem behoben, indem sichergestellt wird, dass ich richtige Version von servlet.jar im Classpath, die durch meine Anwendung genommen wird und auch hatte ich immer alte j2ee.jar Datei in der Klassenpfad und das verursachte das Hauptproblem. Daher habe ich es aus dem Klassenpfad entfernt, um sicherzustellen, dass es standardmäßig Dateien verwendet.

+1

Dies wird nur zukünftige Probleme verursachen. Sie sollten niemals serverspezifische Bibliotheken in Webapp-spezifische Bibliotheken wie '/ WEB-INF/lib' einbinden. Sie sollten niemals lose serverspezifische JAR-Dateien kopieren/duplizieren. 'servlet.jar' ist Tomcat-spezifisch. 'j2ee.jar' ist glasfischspezifisch. Misch sie nicht zusammen. Halte sie dort, wo sie hingehören, in der Serverbibliothek. Sie müssen lediglich den Dateisystempfad zum Klassenpfad hinzufügen (Build-Pfad). In Eclipse müssen Sie lediglich den Server in * Server * integrieren und in den Projekteigenschaften mit * Targeted Runtime * dem Projekt zuordnen. – BalusC

0

Ich hatte das gleiche Problem mit Eclipse Helios, mit Maven Handling Abhängigkeiten und die Verwendung von Jetty als Webserver. Nach der Aktualisierung auf Spring 3.1 habe ich plötzlich dieses Problem, aber nur auf meinem lokalen Entwicklungscomputer.

Zuerst löschte ich die Spring-und Jetty-Ordner in meinem lokalen Maven-Repository und aktualisiert die Abhängigkeiten, aber das hat die Situation nicht verbessert.

Dann löschte ich gerade die servlet-api und servlet-api-2.5 Ordner, die mit Anlegesteg kommt (aber alles andere), ich habe es zur Arbeit.

Alle hageln die Magie des Klassenpfades.