2012-01-16 22 views
23

Tôi tiếp tục nhận được lỗi sau đây sau khi tôi đặt các tệp cần thiết trong đường dẫn xây dựng của tôi trên Eclipse. Tôi đang làm việc trên một ứng dụng Spring MVC Hello World. Tôi đang chạy Eclipse Helios dành cho nhà phát triển Java EE:Cảnh báo Eclipse: XXXXXXXXXXX.jar sẽ không được xuất hoặc xuất bản. Thời gian chạy ClassNotFoundExceptions có thể kết quả

Jan 16, 2012 1:25:42 PM org.apache.catalina.core.StandardContext loadOnStartup 
SEVERE: Servlet /SpringMVCTutorial threw load() exception 
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521) 
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415) 
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397) 
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1062) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1010) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4957) 
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5284) 
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5279) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

Tôi đã thử nhấp chuột phải vào máy chủ và nhấp "sạch". Tôi nhấp chuột phải vào ứng dụng, nhấp vào "Build Path" là "Configure Build Path" và đặt các tệp .jar phù hợp trong thư viện; tuy nhiên, nó vẫn không thừa nhận chúng là phụ thuộc. Tôi đang thiếu gì?

Tôi đã thử những lời khuyên được trình bày trong: eclipse helios: tomcat project - jar will not be exported or published. runtime ClassNotFoundExceptions may result

  1. Kích chuột phải vào dự án web của bạn
  2. Bấm Thuộc tính
  3. Chọn Java EE Mô-đun Dependencies
  4. Nhấp vào Web Thư viện Tab
  5. Thêm các lọ bên ngoài (nếu bình bên ngoài dự án của bạn). Một mục nhập sẽ được thêm vào trong Jar/Module, đảm bảo bạn nhấp vào hộp kiểm (đã chọn).

Vấn đề là khi tôi chọn "Thuộc tính nhấp chuột" Tôi không có tùy chọn nhấp vào phụ thuộc Mô-đun Java EE vì nó không xuất hiện. Tôi đã tải xuống bất kỳ công cụ Java EE bổ sung nào và vẫn không thể tìm thấy nó.

+1

Bạn đang sử dụng Maven để quản lý phụ thuộc của bạn? –

+0

No. Tôi nghĩ nếu tôi đã làm tất cả mọi thứ thông qua Eclipse tôi sẽ không có quá. Tôi nghĩ bạn chỉ cần Maven nếu bạn không sử dụng một IDE? – Mike

+0

Tôi nhận được nó ngay bây giờ. . . Tôi đã tải xuống các trình cắm thêm Maven cho Eclipse. Cảm ơn những người đứng đầu lên :) – Mike

Trả lời

27

Ok. Vì vậy, tôi đã tìm ra. . .

Để làm cho nó hoạt động đúng, tôi phải "thả và kéo" các tệp mà tôi muốn trong đường dẫn/phụ thuộc của tôi vào tệp WEB-INF/lib của mình.

Nó hoạt động theo cách này.

Đối với một số lý do khi tôi cố gắng để làm điều đó một cách đúng đắn

xây dựng đường dẫn -> cấu hình xây dựng đường dẫn -> lọ bên ngoài

nó chỉ doesnt mất.

Bí quyết là tôi phải đặt các tệp vào thư mục Thư viện ứng dụng web của tôi và cách duy nhất để làm điều đó (mà tôi có thể thấy :) là "nhấp và thả" vào tệp WEB-INF/lib của tôi.

Bằng cách này, nó tự động hiển thị trong Thư viện ứng dụng web của tôi.

+0

Tôi đoán nếu tôi không sử dụng maven tôi sẽ đặt tất cả các lọ trong thư mục lib và sau đó thêm chúng vào classpath từ đó. –

+0

Trông giống như một "tính năng" của Eclipse - Tôi cũng đã gặp nó trong bản phát hành 4.2 (Juno). – mjn

+3

Nếu bạn xây dựng với maven: Bỏ qua nó trong Eclipse bao giờ: Windows -> Tuỳ chọn -> Xác thực -> tắt "Trình xác nhận phụ thuộc Classpath" (ít nhất :)) – brabenetz

3

nhấp chuột phải vào dự án của bạn trong project explorer tab, và build path --> configure build path, -->external jars

thêm tất cả các lọ mà bạn muốn.

+0

Vấn đề là đó là những gì tôi đã làm nhưng tôi vẫn nhận được các lỗi được tham chiếu ở trên. Các lọ mà tôi thêm vào sẽ xóa các lỗi compliation của tôi, nhưng bây giờ là lỗi phụ thuộc của tôi. Đi con số! – Mike

9

Khi thêm tệp jar mới, tôi nhận được hai thông báo trên Problems Tab của Eclipse: một lỗi và một cảnh báo. Tôi chỉ giải quyết vấn đề này khi kết hợp tất cả các giải pháp trước đó với một bước bổ sung.Đây là cách tôi đã giải quyết:

  1. "Thả và kéo" các tệp mà tôi muốn trong đường dẫn/phụ thuộc vào tệp WEB-INF/lib của mình;
  2. Nhấp chuột phải vào dự án của bạn trong tab Package Explorerbuild path --> configure build path -->external jars, thêm các tệp mong muốn;
  3. Eclipse khởi động lại;
  4. Chọn Project --> Clean.... Hệ thống của tôi được cấu hình để tự động xây dựng, vì vậy sau bước này, thông báo lỗi đã biến mất, nhưng cảnh báo vẫn còn giữ nguyên;
  5. Nhấp chuột phải vào thông điệp cảnh báo ->Quick Fix;
  6. Chọn tùy chọn Mark the associated raw classpath entry as a publish/export dependency. (như hình bên dưới) Quick fix for warning message
+0

hoạt động này. cảm ơn! – Shankar

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