Eclipse和JSP:. lang。NoSuchMethodError:javax.servlet.jsp.tagext.TagAttributeInfo。(Ljava / lang / String;ZLjava / lang /字符串;ZZ)V

时间:2023-02-05 12:09:08

I'm using Eclipse 3.4 with WTP 3.0.2 and running a fairly large Dynamic Web Project. I've set up the project so that I can access it at http://127.0.0.1:8080/share/ but whenever I do, I get the following error:

我使用的是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
  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)

As none of the above files is my own, pointing out the cause of the problem is quite hard. Any ideas where to start looking?

由于上述文件都不是我自己的,指出问题的原因是相当困难的。有什么想法吗?

5 个解决方案

#1


5  

I ended up answering my own question: the problem was that among the necessary JARs that I had added to Tomcat was a conflicting servlet.jar. When I removed this, the error disappeared.

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

#2


0  

Did you set a Tomcat path in "Preferences->Tomcat->Advanced->Tomcat base" ?

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

Try to clean that path (getting back to default configuration), and check if that does solve the problem.

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

#3


0  

most probably the tomcat plugin in the eclipse cause the conflict problem, i manage to solve the problem by getting the same version jar file and override it in the tomcat plugin in the eclipse.

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

#4


0  

I had similar problem and I had fixed this problem by Ensuring that i have correct version of servlet.jar in the classpath that is being taken by my application and also i had kept old J2EE.jar file in the classpath and that was causing the main problem. Hence I removed it from the classpath to ensure that it uses by default files.

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

#5


0  

I had the same problem running Eclipse Helios, with Maven handling dependencies and using Jetty as webserver. After updating to Spring 3.1 I suddenly got this problem, but only on my local development machine.

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

I first deleted the spring and jetty folders in my local maven repository and updated the dependencies, but that didn't improve the situation.

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

Then I just deleted the servlet-api and servlet-api-2.5 folders that comes with jetty (but leaving everything else), I got it to work.

然后,我删除了带有jetty的servlet api和servlet-api-2.5文件夹(但是其他的东西都没有了),我让它工作了。

All hail the magic of the classpath.

所有这些都是类路径的魔力。

#1


5  

I ended up answering my own question: the problem was that among the necessary JARs that I had added to Tomcat was a conflicting servlet.jar. When I removed this, the error disappeared.

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

#2


0  

Did you set a Tomcat path in "Preferences->Tomcat->Advanced->Tomcat base" ?

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

Try to clean that path (getting back to default configuration), and check if that does solve the problem.

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

#3


0  

most probably the tomcat plugin in the eclipse cause the conflict problem, i manage to solve the problem by getting the same version jar file and override it in the tomcat plugin in the eclipse.

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

#4


0  

I had similar problem and I had fixed this problem by Ensuring that i have correct version of servlet.jar in the classpath that is being taken by my application and also i had kept old J2EE.jar file in the classpath and that was causing the main problem. Hence I removed it from the classpath to ensure that it uses by default files.

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

#5


0  

I had the same problem running Eclipse Helios, with Maven handling dependencies and using Jetty as webserver. After updating to Spring 3.1 I suddenly got this problem, but only on my local development machine.

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

I first deleted the spring and jetty folders in my local maven repository and updated the dependencies, but that didn't improve the situation.

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

Then I just deleted the servlet-api and servlet-api-2.5 folders that comes with jetty (but leaving everything else), I got it to work.

然后,我删除了带有jetty的servlet api和servlet-api-2.5文件夹(但是其他的东西都没有了),我让它工作了。

All hail the magic of the classpath.

所有这些都是类路径的魔力。