Tôi đang cố gắng tạo một công cụ Java sẽ quét cấu trúc của một ứng dụng Java và cung cấp một số thông tin có ý nghĩa. Để thực hiện điều này, tôi cần có khả năng quét tất cả các tệp .class từ vị trí dự án (JAR/WAR hoặc chỉ một thư mục) và sử dụng sự phản chiếu để đọc về các phương thức của chúng. Điều này chứng minh là gần như không thể.Làm thế nào để tải các lớp học tại thời gian chạy từ một thư mục hoặc JAR?
Tôi có thể tìm thấy rất nhiều giải pháp dựa trên URLClassloader cho phép tôi tải các lớp cụ thể từ thư mục/kho lưu trữ, nhưng không có lớp nào cho phép tôi tải lớp mà không có bất kỳ thông tin nào về tên lớp hoặc cấu trúc gói.
CHỈNH SỬA: Tôi nghĩ rằng tôi đã nói sai điều này. Vấn đề của tôi không phải là tôi không thể có được tất cả các tập tin lớp học, tôi có thể làm điều đó với đệ quy vv và xác định vị trí chúng đúng cách. Vấn đề của tôi là lấy một đối tượng Class cho mỗi tệp lớp.
Làm cách nào để bạn tải lớp học bỏ qua tên đầy đủ của nó? Tôi không nghĩ rằng điều này là có thể. –
Câu trả lời bên dưới sẽ cho phép bạn định vị tệp lớp nhưng tùy thuộc vào quy mô dự án của bạn, nó có thể đáng giá bằng [asm] (http://asm.ow2.org/) hoặc [javassist] (http: // www.csg.ci.iu-tokyo.ac.jp/~chiba/javassist/). Chúng sẽ cho phép bạn phân tích các lớp mà không cần tải chúng vào bộ nhớ. –