Vì vậy, tôi bắt đầu với một dự án dịch vụ web (chỉ là một dự án web động) mà xây dựng và gỡ lỗi chính xác từ nhật thực. Chúng tôi đã lấy một đoạn mã chung mà chúng tôi muốn đưa vào một thư viện được chia sẻ để bây giờ các lớp đó sẽ đi vào một dự án jar riêng biệt mà tham chiếu dự án web.Vấn đề đường dẫn gỡ lỗi thời gian gỡ lỗi Eclipse: Làm thế nào để bạn đưa đầu ra của dự án phụ thuộc vào đường dẫn lớp thời gian chạy của dự án web?
Trên dự án web, tôi đã thực hiện Project-> Properties-> Java Build Path-> Projects-> Thêm và thêm dự án jar. Và điều này giải quyết một cách chính xác tất cả các vấn đề classpath thời gian biên dịch và mọi thứ đều tốt đẹp. Nhưng khi chạy, khi máy chủ tomcat kích hoạt, spring cố gắng tiêm một số lớp chứa trong tệp jar và tôi nhận được NoClassDefFoundError.
Tệp .class và thuộc tính của tôi và nội dung của thư mục META-INF của tôi hiển thị trong thư mục ./build, nhưng thư mục WEB-INF/lib của tôi dường như được tham chiếu tại chỗ và phụ thuộc jar không không được sao chép vào nó để hiển thị như một phần của Thư viện ứng dụng web.
Câu thần chú huyền diệu là gì để nói nhật thực rằng dự án jar khác cần phải có sẵn cho tomcat khi chạy? Từ kịch bản kiến xây dựng của chúng tôi, trước tiên chúng tôi chỉ xây dựng dự án khác vào WEB-INF/lib và mọi thứ hoạt động tốt, nhưng không phải để gỡ lỗi nhật thực.
Điều đó dường như đã thực hiện thủ thuật, nhưng tôi không chắc chắn về những gì bạn đang nói về nó là một "Tiện ích" dự án. Có cái gì tôi có thể nhìn thấy trong tập tin .project của tôi hoặc trong .settings/mà sẽ cho tôi biết đó là loại phù hợp? –
Các dự án hữu ích là các dự án Java, mặc dù chúng thích hợp hơn cho ngữ cảnh J2EE. Chúng đại diện cho mã của bạn (không phải các JAR của bên thứ ba) được chia sẻ trên nhiều dự án trong Ứng dụng doanh nghiệp của bạn. Thông thường, đây là các lớp được sử dụng trên nhiều EJB và thường là một mô-đun Web đơn. –
Tôi thường không đặt các dự án Tiện ích trong các dự án Java thuần tuý Java, vì các dự án Tiện ích sẽ có các JAR thời gian chạy của Máy chủ tự động được thêm vào đường dẫn lớp. Ví dụ tôi có thể sử dụng datasources từ cùng một dự án mà không cần thêm các JAR của container vào đường dẫn xây dựng. –