Tôi đã gặp vấn đề này một vài lần và chỉ vấp phải một giải pháp đáng tin cậy (bán), vì vậy tôi nghĩ sẽ đăng nó ở đây trong trường hợp nó giúp bất cứ ai khác, hoặc trong trường hợp tôi quên nó, và cũng để hỏi nếu có ai có bất kỳ ý tưởng nguyên nhân cơ bản là gì và tại sao sửa chữa của tôi hoạt động.ClassNotFoundException DispatcherServlet khi khởi chạy Tomcat (phụ thuộc Maven không được sao chép vào wtpwebapps)
Sự cố - Tôi có một ứng dụng web mùa xuân 3 mà tôi muốn sử dụng tùy chọn Chạy trên máy chủ trong Eclipse để chạy trên máy chủ Tomcat 7. Với một số dự án này chỉ hoạt động, nhưng một số có vẻ như đang ở trạng thái bị hỏng, theo đó mỗi khi máy chủ khởi động, tôi nhận được một lớp không tìm thấy: org.springframework.web.servlet.DispatcherServlet.
Sau một số cuộc điều tra tôi phát hiện ra rằng phụ thuộc maven của dự án đã không được sao chép vào WEB-INF/lib
trong ${PROJECT_LOCATION}/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/
tôi đã cố gắng rất nhiều thứ trước khi cuối cùng nhận thấy rằng dự án đã có một cảnh báo trong bảng điều khiển vấn đề:
Classpath entry org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER
will not be exported or published. Runtime ClassNotFoundExceptions may result.
Có lẽ tôi nên nhận thấy điều này sớm hơn.
Dù sao, việc chọn tùy chọn này và thực hiện "Khắc phục nhanh" sẽ khắc phục sự cố và tôi có thể vui lòng chạy dự án của mình. Khắc phục nhanh là: "Đánh dấu mục nhập classpath nguyên được liên kết là phụ thuộc xuất bản/xuất".
Rắc rối là, mặc dù công trình này, tôi không biết ý nghĩa của nó. Tôi không thể thấy bất kỳ thay đổi rõ ràng nào trong cấu hình dự án của mình sau khi hoàn tất. Tôi rất muốn biết vấn đề thực sự là gì và nếu tôi có thể tránh nó xảy ra lần nữa. Tôi cũng muốn biết nếu có điều gì đó tôi có thể làm được (ngoài việc thực hiện sửa chữa nhanh) có thể đã sửa nó, bởi vì tôi cảm thấy như tôi đã thử mọi thứ khác.
Cảm ơn sự giúp đỡ của bạn.
Cảm ơn! Tôi thấy nó không thể nhớ được những thứ nếu tôi không hiểu _how_ nó hoạt động, vì vậy điều này rất có thể sẽ giúp tôi tiết kiệm rất nhiều đau đớn trong tương lai. – Russell
Tuyệt vời. Điều này thực sự đã giúp tôi sau khi Eclipse của tôi đột nhiên phát nổ không có lý do gì ngày hôm qua. – fforw