Tôi đang sử dụng Eclipse 3.4 với WTP 3.0.2 và chạy một Dự án Web động khá lớn. Tôi đã thiết lập dự án để tôi có thể truy cập nó ở http://127.0.0.1:8080/share/ nhưng bất cứ khi nào tôi làm, tôi nhận được lỗi sau:Eclipse & 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)
Như không ai trong số các tập tin trên là của riêng tôi, chỉ ra nguyên nhân của vấn đề khá là khó. Bất kỳ ý tưởng bắt đầu tìm kiếm ở đâu?
Điều này sẽ chỉ gây ra sự cố trong tương lai. Bạn KHÔNG BAO GIỜ nên bao gồm các thư viện máy chủ cụ thể trong thư viện webapp cụ thể như '/ WEB-INF/lib'. Bạn KHÔNG BAO GIỜ nên sao chép/sao chép các tệp JAR của máy chủ riêng lẻ xung quanh. 'servlet.jar' là Tomcat cụ thể. 'j2ee.jar' là Glassfish cụ thể. Đừng trộn chúng. Giữ chúng ở đó, nơi chúng thuộc về, trong thư viện của máy chủ. Tất cả những gì bạn cần làm là thêm đường dẫn hệ thống tập tin của nó vào classpath (đường dẫn xây dựng). Trong Eclipse, tất cả những gì bạn cần làm là tích hợp máy chủ trong khung nhìn * Servers * và liên kết nó với dự án bằng * Targeted Runtime * trong các thuộc tính của dự án. – BalusC