2008-10-16 28 views
6

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?

Trả lời

5

Tôi đã trả lời câu hỏi của riêng mình: vấn đề là trong số các JAR cần thiết mà tôi đã thêm vào Tomcat là một servlet.jar xung đột. Khi tôi xóa lỗi này, lỗi đã biến mất.

0

Bạn đã đặt đường dẫn Tomcat trong "Tùy chọn-> Tomcat-> Nâng cao-> cơ sở Tomcat" chưa?

Cố gắng xóa đường dẫn đó (quay lại cấu hình mặc định) và kiểm tra xem điều đó có khắc phục được sự cố không.

0

nhất có lẽ là plugin tomcat trong nhật thực gây ra sự cố xung đột, tôi quản lý để giải quyết vấn đề bằng cách lấy cùng một tệp jar phiên bản và ghi đè lên nó trong plugin tomcat trong nhật thực.

0

Tôi có vấn đề tương tự và tôi đã cố định vấn đề này bằng cách đảm bảo rằng tôi có phiên bản đúng của servlet.jar trong classpath nhưng được áp dụng bởi ứng dụng của tôi và tôi cũng đã giữ cũ j2ee.jar tập tin trong classpath và điều đó đã gây ra vấn đề chính. Do đó tôi đã xóa nó khỏi classpath để đảm bảo rằng nó sử dụng bởi các tập tin mặc định.

+1

Đ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

0

Tôi đã gặp sự cố tương tự khi chạy Trình trợ giúp Eclipse, với các phụ thuộc xử lý Maven và sử dụng Jetty làm máy chủ web. Sau khi cập nhật lên Spring 3.1, tôi đột nhiên gặp vấn đề này, nhưng chỉ trên máy phát triển cục bộ của tôi.

Lần đầu tiên tôi xóa các thư mục spring và jetty trong kho lưu trữ maven cục bộ của mình và cập nhật các phụ thuộc, nhưng điều đó không cải thiện tình hình.

Sau đó, tôi vừa xóa các thư mục servlet-api và servlet-api-2.5 đi kèm với cầu cảng (nhưng để mọi thứ khác), tôi đã làm việc đó.

Tất cả đều bảo đảm sự kỳ diệu của đường dẫn lớp.

Các vấn đề liên quan