Saya tahu ini mungkin pertanyaan konyol bagi pembuat kode berpengalaman. Tetapi saya memiliki pustaka (klien http) yang dibutuhkan oleh beberapa kerangka kerja / botol lain yang digunakan dalam proyek saya. Tetapi semuanya membutuhkan versi utama yang berbeda seperti:
httpclient-v1.jar => Required by cralwer.jar
httpclient-v2.jar => Required by restapi.jar
httpclient-v3.jar => required by foobar.jar
Apakah classloader cukup cerdas untuk memisahkannya? Kemungkinan besar tidak? Bagaimana Classloader menangani ini, jika Kelas sama di ketiga toples. Yang mana yang dimuat dan mengapa?
Apakah Classloader hanya mengambil satu botol atau mencampur kelas secara sembarangan? Jadi misalnya jika sebuah kelas dimuat dari Versi-1.jar, semua kelas lain yang dimuat dari classloader yang sama akan masuk ke dalam jar yang sama?
Bagaimana Anda menangani masalah ini?
Apakah ada beberapa trik untuk entah bagaimana "memasukkan" toples ke dalam "required.jar" sehingga terlihat sebagai "satu unit / paket" oleh Classloader
, atau entah bagaimana terkait?