2011-01-18 27 views
6

Tôi đã gặp phải vấn đề thú vị hoàn toàn mới đối với tôi. Như tôi đã đột nhiên phát hiện, đặc điểm kỹ thuật Jar nói rằng, được bao gồm, META-INFMANIFEST.MF phải là mục nhập đầu tiên và thứ hai của gói *.jar và không chỉ thư mục và tệp trong lưu trữ.Làm cách nào để xác minh thứ tự của MANIFEST.MF trong bình?

Tôi đang làm việc với khung công tác Java rất thận trọng về yêu cầu này và không nhiều chi tiết. Làm cách nào để kiểm tra xem META-INFMANIFEST.MF có được đặt hàng đúng cách trong bình không?

CẬP NHẬT: Nhiều lọ là bên thứ ba và có rất nhiều lọ. Tôi không thể mở các lọ này trong notepad, excel, hexeditor, photoshop hoặc bất cứ thứ gì tìm kiếm chuỗi byte. Tôi cần công cụ dòng lệnh. Cảm ơn!

UPDATE 2: Dưới đây là lý do tại sao tôi đang hỏi câu hỏi này: http://www.mail-archive.com/[email protected]/msg17097.html

+1

Trên thực tế các đặc điểm kỹ thuật KHÔNG nói rằng họ phải là người đầu tiên. Tuy nhiên, công cụ dòng lệnh 'jar' không đặt chúng đầu tiên và một số công cụ mong đợi chúng là, ví dụ vì một công cụ có thể nhanh chóng quét các tệp kê khai từ toàn bộ thư mục tệp JAR. Vì vậy, nó thực sự là một quy ước hơn là một yêu cầu. –

+0

@Neil Bartlett, cảm ơn vì đã làm rõ, nhưng nó làm mọi thứ tồi tệ hơn cho tôi: (Đây là nguồn gốc của vấn đề: http://www.mail-archive.com/[email protected]/msg17097.html Bất kỳ – Osw

+0

Aha, do đó, đây là một ví dụ của một công cụ giả định MANIFEST đến trước! Để trả lời câu hỏi ban đầu của bạn, 'jar tf foo.jar' nên liệt kê các nội dung của JAR theo thứ tự –

Trả lời

5

Lệnh sau sẽ liệt kê các nội dung của một JAR theo thứ tự:

jar tf foo.jar 

Lưu ý rằng không có yêu cầu thực tế trong đặc tả JAR cho META-INF/MANIFEST.MF xuất hiện đầu tiên. Tuy nhiên các JAR được xây dựng bằng công cụ jar (được cung cấp kèm theo JDK) do có tệp kê khai đầu tiên và do đó nó đã trở thành một quy ước.

2

Công cụ jar với JDK tự động thêm chúng đầu tiên, vì vậy không nên có bất cứ điều gì bạn phải làm . Nếu bạn thực sự muốn kiểm tra, hãy tìm trình soạn thảo hex và tìm chuỗi 'META-INF' và 'MANIFEST.MF' trước bất kỳ tên tệp nào khác.

+0

Cảm ơn, có thể hữu ích trong một số trường hợp , những công cụ dòng lệnh thì sao? – Osw

+0

Để chỉnh sửa hex? Tôi không thực sự biết về các công cụ dòng lệnh cho nó, nhưng bạn cũng có thể chỉ cần mở nó với Notepad và tìm kiếm các chuỗi ở đó, nó sẽ không được đẹp như với một trình soạn thảo hex. –

+0

để xác minh. như "jar --verify-order-of-manifest my.ajr" – Osw

Các vấn đề liên quan