2009-01-07 26 views
8

Khi tôi sử dụng dòng cmd này: jar CMF arshad.mf ars.jar * .class tôi nhận được lỗi này:tập tin tiêu đề không hợp lệ trong khi sử dụng bình để lưu trữ

invalid header field name:Manifest-version 

Đây là file manifest của tôi:

Manifest-Version: 1.0 
Main-Class:t 

tôi đã tạo tệp kê khai bằng notepad trong mã hóa UTF-8 - có vấn đề gì với tệp kê khai không?

+0

Xin chào các bạn, hãy nhớ upvote câu hỏi này và câu trả lời nếu điều này đã giúp bạn! Một câu hỏi nên có nhiều hơn 1 phiếu bầu nếu nó có lượt xem 5 nghìn lượt xem! – John

Trả lời

17

Thêm một không gian sau dấu hai chấm:

Manifest-Version: 1.0 
Main-Class: t 
+0

wow. đó là một giải pháp hoàn hảo.thx rất nhiều :) – arshad

+0

thxxxxxxxxxxxxx rất nhiều Tôi đã tìm kiếm rất nhiều với không có kết quả hữu ích !! Tôi đã viết: "Main-Class: MainFram" Sau khi tôi đọc câu trả lời của bạn, tôi đã viết: "Main-Class: MainFram" và nó đã hoạt động! cảm ơn bạn rất nhiều @Adam Rosenfield –

0

Vâng, đó là sự thật.

Một sai lầm phổ biến mà mọi người mắc phải khi ghi tệp kê khai của họ cho jar là họ không đặt dấu cách sau dấu hai chấm. Tôi không biết, dựa trên những gì bạn viết ở đây, nếu đó là nó hay không nhưng hãy thử xem.

Ví dụ:

Main-Class:someClass //wrong 
Main-Class: someClass //correct 
0

Ngoài ra, file manifest của bạn phải được lưu lại dưới dạng UTF-8. Bạn không nhất thiết phải viết nó an toàn trên MS Notepad và lưu dưới dạng mã hóa UTF-8. bài này có một số chi tiết tốt:

Invalid Header Field Name when adding manifest to JAR using Eclipse

Notepad thêm một số byte lên phía trước để phát sóng các endian-Ness của dữ liệu. Điều này sẽ phá vỡ lệnh jar. Một giải pháp tốt là không sử dụng Notepad và tải xuống Notepad ++. Trong Notepad ++, bạn chọn 'encoding' từ thanh trên cùng, và chọn 'UTF-8 Without BOM'. Lưu tệp kê khai của bạn với cài đặt này được áp dụng sẽ giải quyết được sự cố. Nếu không có người khác.

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