Eclipse 日食及;JSP:java.lang.NoSuchMethodError:javax.servlet.JSP.tagext.TagAttributeInfo;初始化>;(Ljava/lang/String;ZLjava/lang/String;ZZ)V

Eclipse 日食及;JSP:java.lang.NoSuchMethodError:javax.servlet.JSP.tagext.TagAttributeInfo;初始化>;(Ljava/lang/String;ZLjava/lang/String;ZZ)V,eclipse,jsp,eclipse-3.4,Eclipse,Jsp,Eclipse 3.4,我将Eclipse3.4与WTP3.0.2一起使用,并运行一个相当大的动态Web项目。我已设置该项目,以便可以在访问时访问它,但每当我这样做时,就会出现以下错误: java.lang.NoSuchMethodError: javax.servlet.jsp.tagext.TagAttributeInfo.(Ljava/lang/String;ZLjava/lang/String;ZZ)V at org.apache.jasper.compiler.TagLibraryInfoImpl.cre

我将Eclipse3.4与WTP3.0.2一起使用,并运行一个相当大的动态Web项目。我已设置该项目,以便可以在访问时访问它,但每当我这样做时,就会出现以下错误:

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) java.lang.NoSuchMethodError:javax.servlet.jsp.tagext.TagAttributeInfo。(Ljava/lang/String;ZLjava/lang/String;ZZ)V 位于org.apache.jasper.compiler.taglibraryinfo.createAttribute(taglibraryinfo.java:572) 位于org.apache.jasper.compiler.taglibraryinfo.createTagInfo(taglibraryinfo.java:401) 位于org.apache.jasper.compiler.taglibraryinfo.parseTLD(taglibraryinfo.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(未知源)
由于上述文件都不是我自己的,指出问题的原因相当困难。你知道从哪里开始找吗?

你在“首选项->Tomcat->高级->Tomcat基础”中设置了Tomcat路径了吗


尝试清理该路径(返回默认配置),并检查这是否解决了问题。

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

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

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

我在运行Eclipse Helios时遇到了同样的问题,Maven处理依赖项并使用Jetty作为Web服务器。在升级到Spring3.1之后,我突然遇到了这个问题,但只出现在我本地的开发机器上

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

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


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

这只会给未来带来麻烦。您不应该在特定于webapp的库中包括特定于服务器的库,如
/WEB-INF/lib
。您不应该在周围复制/复制松散的特定于服务器的JAR文件
servlet.jar
是特定于Tomcat的
j2ee.jar
是特定于Glassfish的。不要把它们混在一起。将它们保存在服务器的库中,它们属于的地方。基本上,您需要做的就是将其文件系统路径添加到类路径(构建路径)。在Eclipse中,您所需要做的就是在Servers视图中集成服务器,并在project属性中按目标运行时将其与project关联。