6

我正在使用带有 WTP 3.0.2 的 Eclipse 3.4 并运行一个相当大的动态 Web 项目。我已经设置了项目,以便我可以在http://127.0.0.1:8080/share/访问它,但每当我这样做时,我都会收到以下错误:

  java.lang.NoSuchMethodError: javax.servlet.jsp.tagext.TagAttributeInfo.(Ljava/lang/String;ZLjava/lang/String;ZZ)V
  在 org.apache.jasper.compiler.TagLibraryInfoImpl.createAttribute(TagLibraryInfoImpl.java:572)
  在 org.apache.jasper.compiler.TagLibraryInfoImpl.createTagInfo(TagLibraryInfoImpl.java:401)
  在 org.apache.jasper.compiler.TagLibraryInfoImpl.parseTLD(TagLibraryInfoImpl.java:248)
  在 org.apache.jasper.compiler.TagLibraryInfoImpl.(TagLibraryInfoImpl.java:162)
  在 org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:423)
  在 org.apache.jasper.compiler.Parser.parseDirective(Parser.java:492)
  在 org.apache.jasper.compiler.Parser.parseElements(Parser.java:1552)
  在 org.apache.jasper.compiler.Parser.parse(Parser.java:126)
  在 org.apache.jasper.compiler.ParserController.doParse(ParserController.java:211)
  在 org.apache.jasper.compiler.ParserController.parse(ParserController.java:100)
  在 org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:155)
  在 org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
  在 org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
  在 org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
  在 org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
  在 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303)
  在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
  在 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
  在 javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
  在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
  在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
  在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
  在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
  在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
  在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
  在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
  在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
  在 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
  在 org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
  在 org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
  在 org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
  在 org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
  在 java.lang.Thread.run(未知来源)

由于以上文件都不是我自己的,因此很难指出问题的原因。任何想法从哪里开始寻找?

4

5 回答 5

5

我最终回答了我自己的问题:问题是我添加到 Tomcat 的必要 JAR 中有一个冲突的 servlet.jar。当我删除它时,错误消失了。

于 2008-10-16T06:31:04.573 回答
0

您是否在“Preferences->Tomcat->Advanced->Tomcat base”中设置了 Tomcat 路径?

尝试清理该路径(恢复默认配置),并检查是否能解决问题。

于 2008-10-16T06:20:50.553 回答
0

很可能是eclipse中的tomcat插件导致了冲突问题,我设法通过获取相同版本的jar文件并在eclipse中的tomcat插件中覆盖它来解决问题。

于 2009-03-18T09:31:22.343 回答
0

我有类似的问题,我通过确保我的应用程序正在使用的类路径中有正确版本的servlet.jar来解决这个问题,并且我在类路径中保留了旧的J2EE.jar文件,这导致了主要问题。因此,我将它从类路径中删除以确保它默认使用文件。

于 2010-07-13T12:18:33.403 回答
0

我在运行 Eclipse Helios 时遇到了同样的问题,Maven 处理依赖项并使用 Jetty 作为网络服务器。更新到 Spring 3.1 后,我突然遇到了这个问题,但只是在我的本地开发机器上。

我首先删除了本地 maven 存储库中的 spring 和 jetty 文件夹并更新了依赖项,但这并没有改善情况。

然后我只是删除了码头附带的 servlet-api 和 servlet-api-2.5 文件夹(但保留了其他所有内容),我让它工作了。

所有人都为类路径的魔力欢呼。

于 2011-03-02T09:20:42.267 回答