2012-09-11 26 views
7

Stacktrace sau đây là những gì tôi nhận được khi tôi cố gắng truy cập một servlet, mà dường như chạy tốt từ người quản lý Tomcat.Servlet: SEVERE: Phân bổ ngoại lệ cho servlet

11 Sep, 2012 11:50:12 AM org.apache.catalina.core.ApplicationContext log 
INFO: Marking servlet LoginServlet as unavailable 
11 Sep, 2012 11:50:12 AM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Allocate exception for servlet LoginServlet 
java.lang.Error: Unresolved compilation problems: 
    The import javax.servlet cannot be resolved 
    The import javax.servlet cannot be resolved 
    The import javax.servlet cannot be resolved 
    The import javax.servlet cannot be resolved 
    The import javax.servlet cannot be resolved 
    The import javax.servlet cannot be resolved 
    HttpServlet cannot be resolved to a type 
    ServletConfig cannot be resolved to a type 
    ServletException cannot be resolved to a type 
    HttpServlet cannot be resolved to a type 
    ServletContext cannot be resolved to a type 
    ServletException cannot be resolved to a type 
    HttpServletRequest cannot be resolved to a type 
    HttpServletResponse cannot be resolved to a type 
    ServletException cannot be resolved to a type 
    request cannot be resolved 
    The method getLoggedin() from the type LoginHandler refers to the missing type ServletException 
    The method destroy() of type LoginManager must override or implement a supertype method 
    HttpServlet cannot be resolved to a type 

    at com.login.servlets.LoginManager.<init>(LoginManager.java:5) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at java.lang.Class.newInstance0(Unknown Source) 
    at java.lang.Class.newInstance(Unknown Source) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1149) 
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:827) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877) 
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:594) 
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675) 
    at java.lang.Thread.run(Unknown Source) 
11 Sep, 2012 12:05:12 PM org.apache.catalina.core.ApplicationContext log 
INFO: Marking servlet Log4JInitServlet as unavailable 
11 Sep, 2012 12:05:12 PM org.apache.catalina.core.StandardContext loadOnStartup 
SEVERE: Servlet /logintest threw load() exception 
java.lang.Error: Unresolved compilation problems: 
    The import javax.servlet cannot be resolved 
    The import javax.servlet cannot be resolved 
    The import javax.servlet cannot be resolved 
    The import javax.servlet cannot be resolved 
    The import org.apache cannot be resolved 
    The import org.apache cannot be resolved 
    HttpServlet cannot be resolved to a type 
    ServletConfig cannot be resolved to a type 
    ServletException cannot be resolved to a type 
    ServletContext cannot be resolved to a type 
    BasicConfigurator cannot be resolved 
    PropertyConfigurator cannot be resolved 
    BasicConfigurator cannot be resolved 

    at com.logger.WebLogger.<init>(WebLogger.java:5) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at java.lang.Class.newInstance0(Unknown Source) 
    at java.lang.Class.newInstance(Unknown Source) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1149) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734) 
    at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3461) 
    at org.apache.catalina.manager.ManagerServlet.reload(ManagerServlet.java:943) 
    at org.apache.catalina.manager.HTMLManagerServlet.reload(HTMLManagerServlet.java:557) 
    at org.apache.catalina.manager.HTMLManagerServlet.doGet(HTMLManagerServlet.java:121) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:186) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:563) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:877) 
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:594) 
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1675) 
    at java.lang.Thread.run(Unknown Source) 

Tất cả các lọ được sử dụng bên trong đường dẫn eclipse đều có trong thư mục lib Tomcat. Các webapp là nhận được triển khai với ra bất kỳ bản ghi lỗi, nhưng khi tôi cố gắng truy cập vào một servlet, ngoại lệ này xảy ra, và tôi nhận được nó đăng nhập vào các bản ghi tomcat. Bất cứ ai có thể giúp đỡ với điều này?

The package names are proper inside 'classes', also, the web.xml is proper. 

Tôi không biết tại sao điều này xảy ra. Có một số ứng dụng web khác, hầu như sử dụng cùng một libs chạy tốt. Mong đợi một số ai có thể giúp tôi với điều này ..

Cảm ơn

+0

Liệu nó xảy ra khi chạy trong Eclipse hoặc trong một Tomcat độc lập? – Tarlog

+1

Kiểm tra http://stackoverflow.com/questions/4076601/how-do-i-import-the-javax-servlet-api-in-my-eclipse-project –

Trả lời

7

Cuối cùng, có lỗi của tôi. Đây là một vấn đề gây ra bởi nhật thực. Kể từ khi xây dựng là không thích hợp, các tập tin lớp nơi bị hỏng. Tôi đã dọn sạch toàn bộ dự án, lấy một công trình mới, bây giờ nó hoạt động tốt. Cảm ơn bạn đã trả lời.

3

Bằng cách nào đó bạn đang thiếu các servlet-api.jar. Nó phải được đặt trong thư mục tomcat\lib.

1

"java.lang.Error: Unresolved compilation problems:"

nói rằng ứng dụng không được biên dịch đúng cách. Vui lòng đặt servlet-api.jar trong classpath, không chỉ trong thư mục lib của dự án, mà còn đính kèm vào classpath.

Hãy đảm bảo rằng cùng một lọ cũng có sẵn trong thư mục tomcat/common/lib.

+0

tomcat/common/lib này dành cho Tomcat 5.5 hoặc cũ hơn . Vì Tomcat 6 nó không liên quan. – Tarlog

+0

gây ra bởi eclipse hỏng xây dựng. Giải quyết – Kris

4

Sau khi xem xét các ngoại lệ, bạn có, một số nơi bạn đã đặt nhầm các tệp jar

(servlet-api.jar). Nó phải nằm trong thư mục Project/WEB-INF/lib của bạn. Tôi nghĩ rằng nó sẽ

hoạt động nếu tệp jar của bạn nằm trong đường dẫn được chỉ định ở trên.

0

Tôi cũng thấy ngoại lệ này khi chú thích @Resource gây ra xung đột với hai công nghệ đẩy lên các ngón chân của nhau (tomcat servlet api 3 và spring).

2

Nếu bạn gặp lỗi này "SEVERE: Phân bổ ngoại lệ cho servlet" cùng với ngoại lệ "java.lang.InstantiationException", hãy đảm bảo rằng lớp servlet của bạn có một hàm tạo không đối số công khai vì thùng chứa servlet cần có khả năng để khởi tạo nó.

Nếu lớp servlet của bạn không có một hàm tạo đối số khác không được định nghĩa (thường là trường hợp), hàm tạo mặc định do trình biên dịch cung cấp sẽ đủ.

1

Tôi gặp vấn đề tương tự! Đã dành 2 giờ để tìm kiếm giải pháp! Và đây rồi!

WebContent (dưới động dự án Web) -> WEB-INF -> lib (đó là empty- tất cả các bên phải) -> bấm chuột phải vào nó (lib) -> Build Path -> Use as Nguồn Folder.

XONG!

+0

cũng làm việc cho tôi :) cảm ơn bạn đã chia sẻ. –

+0

Rất vui khi được nghe! –

0

trường hợp của tôi đã sử dụng J biểu ava 8 lamda với phiên bản cũ của phần còn lại mà không được dựa trên Java 8

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