một ứng dụng tôi đã viết sử dụng một số lọ bên thứ ba. Đôi khi chỉ một phần nhỏ của toàn bộ 50kB đến 1,7mB jar được sử dụng - một hoặc hai cuộc gọi hoặc các lớp chức năng.Giảm thiểu kích thước phụ thuộc của jar
Cách tốt nhất để giảm kích thước bình. Tôi có nên tải xuống các nguồn và xây dựng một cái bình chỉ với các lớp tôi cần không? Những công cụ hiện có nào có thể giúp tự động hóa điều này (ví dụ: tôi đã xem qua số http://code.google.com/p/jarjar/)?
Cảm ơn bạn
Sửa 1: Tôi muốn giảm kích thước của bên thứ ba của tôi lọ 'chính thức' như swingx-1.6.jar (1,4 MB), set-3,6 (1,7 MB) glazedlists -1.8.jar (820kB), vv để họ chỉ chứa các lớp học tối thiểu tôi cần
chỉnh sửa 2: Giảm thiểu một lọ bằng tay hoặc bằng cách sử dụng một chương trình như Proguard là tiếp tục phức tạp nếu việc sử dụng thư viện phản ánh. Injection with google guice does not work anymore after obfuscation with proguard
Câu trả lời bởi cletus về bài đăng khác là rất tốt How to determine which classes are used by a Java program?
Tôi đã sử dụng Proguard để làm xáo trộn lọ ứng dụng của tôi với kết quả tốt và nhận thấy kích thước đầu ra nhỏ hơn. Tôi cũng gặp vấn đề với 'các lớp bị hỏng' như bạn đề cập, với các đối tượng xstream, cho đến khi tôi thêm chúng vào phần "giữ". Tôi đã không sử dụng proguard để giảm kích thước của lọ phụ thuộc của tôi mặc dù - là điều này có thể? –
@brian_d - vâng, có thể sử dụng -injars/-outjars. Tôi đoán 'mức độ khó' sẽ liên quan đến số lượng lọ bạn có. Một ví dụ sử dụng tôi đã có được mã hóa bouncycastle. Tôi đã có thể chỉ cần bao gồm các lớp học tôi cần thiết, loại bỏ tất cả các mã cho các thuật toán không sử dụng, vv –
cảm ơn cho đề nghị này, tôi sẽ cung cấp cho một thử. –