Có cách nào để xác định các lớp nào được tải từ các jars nào khi chạy không?Cách khám phá những lớp nào được tải từ JAR nào?
Tôi chắc chắn tất cả chúng ta đã ở trong địa ngục JAR trước đây. Tôi đã chạy qua vấn đề này rất nhiều xử lý sự cố ClassNotFoundException
s và NoClassDefFoundError
s về các dự án. Tôi muốn tránh tìm tất cả các trường hợp của một lớp trong lọ và sử dụng quy trình loại bỏ trên mã khiến CNFE tìm ra thủ phạm.
Mọi công cụ quản lý hoặc hồ sơ có cung cấp cho bạn loại thông tin này không?
Vấn đề này cực kỳ khó chịu vì chúng tôi cần có thông tin này vào thời điểm lớp được tải. Có phải là một cách để có được nó, hoặc ghi lại nó và tìm thấy nó, nhưng tôi biết không có gì mà sẽ làm điều này, phải không?
Tôi biết OSGi và các gói/mô-đun được phiên bản nhằm mục đích làm cho vấn đề này không thành vấn đề ... nhưng dường như nó không biến mất sớm. :)
LƯU Ý: Tôi tìm thấy điều này question là một tập con của câu hỏi của tôi liên quan đến các lớp được tải từ các lọ được phiên bản.
Cập nhật: Hơi liên quan, bài đăng này giải thích một chiến lược tìm kiếm một lớp trong lọ (hoặc trong thư mục hiện tại) hoặc trong M2_REPO của bạn. JarScan, scan all JAR files in all subfolders for specific class
Cập nhật 2: Cũng hơi liên quan, JBoss Tattletale
Jason Day có quyền, về cơ bản đây là bản sao của câu hỏi tôi đã hỏi cách đây không lâu. http://stackoverflow.com/questions/779650/where-on-the-file-system-was-my-java-class-loaded-from – shsteimer