Java

Lỗi Etat HTTP 500 – Error instantiating servlet class – Lỗi khởi tạo class servlet

Chào các tín đồ Java. Bài viết “Lỗi Etat HTTP 500 - Error instantiating servlet class - Lỗi khởi tạo class servlet” là bài viết thứ hai nằm trong loạt bài “Tổng hợp lỗi Server Tomcat thường gặp và cách khắc phục” tại blog. Trước đó mình đã giới thiệu về một lỗi anh em với 500 là 404. Bạn có thể xem thêm bài đó: Thông báo lỗi Etat HTTP 404 trong Java Web – Chuyện gì đang xảy ra.

Lỗi Etat HTTP 500 - Error instantiating servlet class - Lỗi khởi tạo class servlet

500 là lỗi gì?

Trước tiên, chúng ta cần biết 500 là mã lỗi gì, khác như thế nào với 404 nhé. 404 là lỗi không tìm thấy, không phải lỗi hoàn toàn của server, vậy 500 là lỗi hoàn toàn do server. Khi server bị lỗi gì đó (cũng do thằng lập trình viên code sai thôi) thì lập tức mã lỗi 500 sẽ trả về cho người dùng. Mà cụ thể trong Java Web sẽ là Etat HTTP 500.

Lỗi server (Etat HTTP 500) thì có rất rất nhiều loại. Do đó, trong bài này mình chỉ giới thiệu qua lỗi Error instantiating servlet class và cách khắc phục. Những lỗi server Etat HTTP 500 khác mình sẽ giới thiệu trong những bài viết khác nữa (mỗi lỗi một bài).

Etat HTTP 500 – Error instantiating servlet class…

Mình có một số thông tin mẫu về lỗi hiện trên trình duyệt như sau: (có thể xem hình trên)

Giới thiệu một chút thông tin:

  • Server Tomcat mình đang dùng: Apache Tomcat verion 7.0.63
  • Mình đang truy cập vào địa chỉ (url pattern): “\a-du” thì bị lỗi.

Cách khắc phục lỗi Error instantiating servlet class…

Để sửa được lỗi này, bạn phải đọc thông báo lỗi mà server trả về. Lỗi này khá đơn giản nên chỉ cần nhìn lỗi trên trình duyệt thì có thể sửa được ngay. Nhưng đối với các lỗi phức tạp hơn, mình khuyên các bạn nên nhìn vào thông báo lỗi hiện ở console của IDE (Eclipse chẳng hạn) nữa nhé.

Đây là thông báo lỗi hiện ở console (có vẻ giống với những gì trình duyệt hiển thị)

Phân tích lỗi

Bạn có thấy thông báo: Error instantiating servlet class ADuController: Đây là lỗi khi khởi tạo class servlet, mà cụ thể ở đây là class ADuController (Á đù 😀 ). Có thể servlet với tên này chưa tồn tại.

Tiếp tục nhìn xuống dưới tý (dưới đoạn thông báo trên chứ không phải dưới rốn nhé 😀 ) hoặc nhìn vào console: Có dòng java.lang.ClassNotFoundException: ADuController – Đây mới là mấu chốt của vấn đề, có thể chỉ nhìn vào dòng này là biết được lỗi gì rồi. Một Exception từ ClassNotFoundException thì chỉ có thể là không tìm thấy class có tên ADuController.

Khắc phục thôi

Như vậy, chúng ta đã xác định được nguyên nhân lỗi là không tìm thấy class ADuController:

  • Có khả năng bạn chưa tạo ra class ADuController trong project (chưa tạo thì tạo đi nhé).
  • Nếu đã tạo rồi thì có thể do server chưa build kịp servlet đó ra class. Thử restart lại server Tomcat, hoặc clean project, clean Tomcat nhé (Chưa biết cách clean thì xem lại bài lỗi 404, mình có hướng dẫn ở bài đó)
  • Một trường hợp nữa, có khả năng xảy ra như sau: Bạn không biết ADuController từ đâu xuất hiện, bạn chưa bao giờ có ý định tạo ra servlet đó. Vậy thì xem lại phần cấu hình file web.xml, tương ứng với url pattern (<url-pattern>/a-du</url-pattern>) đang truy cập sẽ được mapping với một servlet (ví dụ: <servlet-class>ADuController</servlet-class>). Có thể class bạn muốn mapping với url kia là AhihiADuController chứ không phải là ADuController.

Xong! Kết thúc bài viết tại đây. Nếu có thắc mắc hay cần góp ý gì thì để lại comment cho mình bên dưới bạn nhé 😀

Bình luận Facebook

Bình luận

Hãy là người đầu tiên bình luận bạn nhé :)

Thông báo khi có
avatar
wpDiscuz
Lập trình Android với Kotlin: Ứng dụng máy tính đơn giản
Tạo project ứng dụng HelloWorld với Kotlin trên Android Studio
Tài liệu, giáo trình học Android, Web với ngôn ngữ lập trình Kotlin
Kotlin trở thành ngôn ngữ chính thức để lập trình Android
Bạn hay gặp lỗi với Tomcat ServerXem cách fix
+