我正在使用Eclipse 3.4和WTP 3.0.2并运行一个相当大的动态Web项目。我已经设置了项目,以便我可以在http://127.0.0.1:8080/share/访问它,但每当我这样做时,我都会收到以下错误:
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)
由于上述文件都不属于我自己,因此指出问题的原因非常困难。任何想法从哪里开始寻找?
答案 0 :(得分:5)
我最后回答了自己的问题:问题是我添加到Tomcat的必要JAR中存在冲突的servlet.jar。当我删除它时,错误消失了。
答案 1 :(得分:0)
您是否在“Preferences-> Tomcat-> Advanced-> Tomcat base”中设置了Tomcat路径?
尝试清理该路径(返回默认配置),并检查是否确实解决了问题。
答案 2 :(得分:0)
答案 3 :(得分:0)
我有类似的问题,我已经解决了这个问题,确保我的应用程序正在使用的类路径中有正确版本的 servlet.jar ,并且我保持旧的类路径中的J2EE.jar 文件导致了主要问题。因此,我将其从类路径中删除,以确保它默认使用文件。
答案 4 :(得分:0)
运行Eclipse Helios时遇到了同样的问题,Maven处理依赖关系并使用Jetty作为webserver。更新到Spring 3.1后,我突然遇到了这个问题,但只在我的本地开发机器上。
我首先删除了本地maven存储库中的spring和jetty文件夹并更新了依赖项,但这并没有改善这种情况。
然后我刚刚删除了jetty附带的servlet-api和servlet-api-2.5文件夹(但保留了其他所有内容),我让它工作了。
所有人都欢迎类路径的魔力。