Đối với Java, việc bạn cung cấp bao nhiêu phiên bản không quan trọng. Trình nạp lớp mặc định sẽ chỉ chọn trình đầu tiên trên đường dẫn lớp mà nó có thể tìm thấy.
Vì bạn có thể chạy các ứng dụng mà không có lỗi này có nghĩa là một trong những cách sau:
nếu Javassist-3.9.0.GA.jar là lần đầu tiên trên classpath: ứng dụng của bạn không dựa vào mới API hoặc sửa lỗi trong javassist-3.20.0-GA.jar Cũng không có API nào bạn sử dụng của thư viện này thay đổi giữa các phiên bản này (thư viện không nên làm giữa các phiên bản nhỏ)
if javassist-3.20.0-GA .jar đầu tiên trên đường dẫn lớp: thư viện tương thích ngược
Tôi đề nghị:
- Nếu những phụ thuộc là phụ thuộc trực tiếp vào các phần khác nhau của ứng dụng của bạn, hãy chắc chắn bạn đang sử dụng ở khắp mọi nơi cùng một phiên bản. Cách tốt nhất là sửa phiên bản trong phần dependencyManagement của POM cha và sau đó bỏ qua thuộc tính phiên bản trong phần phụ thuộc.
- Nếu những phụ thuộc này là phụ thuộc transitive, thì loại trừ phụ thuộc bạn không muốn sử dụng để đảm bảo bạn chỉ có một phiên bản của thư viện trong ứng dụng cuối cùng của bạn. Ngoài ra, hãy xem xét để gửi một vấn đề cho dự án vẫn sử dụng phiên bản cũ và yêu cầu họ nâng cấp phiên bản của phụ thuộc.
- Nếu bạn cần làm việc với hai phiên bản không tương thích của cùng một thư viện, có cùng tên gói và tên lớp, hãy xem xét sử dụng hệ thống mô-đun như OSGi, hỗ trợ chạy các phiên bản khác nhau của cùng một thư viện.
Nếu bạn thực sự có hai phiên bản của cùng một hiện vật trong chiến tranh 'của bạn, bạn đang làm điều gì đó sai ... với Maven mặc định và maven-war-plugin sẽ không bao giờ có một tệp jar trùng lặp trong thư mục lib của bạn .... (Có vẻ như bạn đang làm những việc thủ công mà nên để lại maven để làm) ... – khmarbaise
Cảm ơn, nếu tôi đang sử dụng mục tiêu 'gói' để xây dựng tệp chiến tranh, có phải nó không sử dụng plugin maven war để làm điều đó không? nếu không, những gì khác nhau maven-war-plugin nào để 'gói' mục tiêu? –
'gói' không phải là một mục tiêu đó là vòng đời Nếu bạn đã đặt đúng' chiến tranh 'trong tệp pom của bạn, thao tác này sẽ hoạt động ra khỏi hộp ... Tốt nhất là xem tệp pom bạn đang sử dụng .. –
khmarbaise