Các tệp JAR của tôi phải được ký cho một ứng dụng webstart. Nó sẽ được tốt đẹp để cũng có họ đóng gói để giảm thiểu thời gian tải về. Tôi đang cố gắng để cấu hình một nhiệm vụ Ant để tự động làm điều đó trong quá trình triển khai ứng dụng. Kể từ khi quá trình gói tổ chức lại các jar cấu trúc bên trong làm vô hiệu các chữ ký, các Pack200 documentation đề xuất một quy trình 3 bước:Làm thế nào để tạo một tác vụ Ant để ký và đóng gói tất cả các tệp JAR của tôi?
- Đóng gói lại JAR với pack200
- Ký tên vào JAR với jarsigner
- Compress JAR jar với pack200 tạo ra một .jar.pack.gz file
Ant có nhiệm vụ signjar mặc định và Sun xuất bản Pack200 ant task.
Vấn đề là nhiệm vụ Sun pack200 chỉ hoạt động trên một tệp tại một thời điểm và thao tác repack phải chỉ định tệp đầu ra.
Tôi tin rằng nó phải là một hoạt động khá phổ biến, nhưng tệp kiến thức của tôi đang trở nên quá phức tạp và có quá nhiều tệp tạm thời. Thời gian để cầu xin sự khôn ngoan của cộng đồng:
Có cách nào dễ dàng hoặc ít nhất là tiêu chuẩn để đóng gói và ký tất cả các tệp JAR của tôi không?
pack200 sẽ thất bại nếu JAR được ký trước hoạt động đóng gói lại. Trong trường hợp này, bạn sẽ nhận được thông báo lỗi như "lỗi ngoại lệ trong chuỗi" chính "lỗi java.lang.SecurityException: SHA1 digest for ..." Lỗi cơ bản là việc ký vào dấu đóng gói trả về thành công, nhưng nếu bạn chạy jarsigner -xác minh, nó sẽ báo cáo một thất bại. – cmcginty
Bạn cũng nên thêm đối số --segment-limit = -1 vào mục tiêu repack để tránh lỗi http://bugs.sun.com/view_bug.do?bug_id=5078608 (xem cách giải quyết thứ nhất). – foch