Tôi biết đây có thể là một câu hỏi ngớ ngẩn cho các lập trình viên có kinh nghiệm. Nhưng tôi có một thư viện (một máy khách http) mà một số khung / lọ khác được sử dụng trong dự án của tôi yêu cầu. Nhưng tất cả chúng đều yêu cầu các phiên bản chính khác nhau như:
httpclient-v1.jar => Required by cralwer.jar
httpclient-v2.jar => Required by restapi.jar
httpclient-v3.jar => required by foobar.jar
Trình nạp lớp có đủ thông minh để ngăn cách chúng bằng cách nào đó không? Hầu như không? Classloader xử lý việc này như thế nào, trong trường hợp một Class giống nhau trong cả ba lọ. Cái nào được tải và tại sao?
Classloader chỉ nhận chính xác một jar hay nó trộn các lớp tùy ý? Vì vậy, ví dụ nếu một lớp được tải từ Phiên bản-1.jar, tất cả các lớp khác được tải từ cùng một trình nạp lớp đều sẽ đi vào cùng một jar?
Làm thế nào để bạn xử lý vấn đề này?
Có một số mẹo để bằng cách nào đó "kết hợp" các lọ vào "required.jar" để cái được xem là "một đơn vị / gói" bởi Classloader
, hoặc bằng cách nào đó được liên kết?