Bạn có thể chạy dự án bằng tùy chọn -verbose:class
VM. Thao tác này sẽ in cho tất cả các lớp đã tải nơi chúng được tải. Sử dụng một số ứng dụng phân tích cú pháp thông minh/grep/regexp sẽ cho phép bạn lọc các tên jar thành một tập hợp các mục duy nhất và cho bạn biết những gì được sử dụng.
Tôi nghĩ rằng điều này sẽ dễ dàng hơn vì nó sẽ tự động cho bạn biết nếu một lớp được sử dụng và nếu như vậy trong đó jar. Tất nhiên vấn đề với mã này và phạm vi bảo hiểm là bạn có thể xóa một lọ chỉ được sử dụng trong một số trường hợp ngoại lệ, nhưng trình biên dịch của bạn sẽ phàn nàn nếu bạn xóa một hoặc hai quá nhiều, để lại cho bạn (hầu hết không phải là quá phức tạp) nhiệm vụ phát hiện mà jar lớp là trong
có thể gợi ý khi sử dụng linux:.
java -verbose:class <your startup command here> | grep "\[Loaded" | grep -o "from .*\]" | cut -c 6- | sort | uniq
Nếu bạn không sử dụng linux, sau đó lưu vào một tập tin, có được một máy Linux và chạy trên Linux (hoặc sử dụng một cái gì đó để chạy lệnh bash trên windows)
loại bỏ các lọ khỏi đường dẫn lớp từng người một thêm lại lần cuối trên e bị xóa khi đoạn mã bị hỏng –
@ ratchet freak - Ý tưởng tồi sẽ không phát hiện các phụ thuộc thời gian gián tiếp trừ khi bản dựng bao gồm kiểm tra tích hợp hoàn chỉnh. –
@ ratchet freak - Điều đó có thể hiệu quả, nhưng đó là sức mạnh vũ phu cuối cùng của tôi. – RobAu