2012-02-14 53 views
6

Khi tôi cố gắng để chạy lệnh sau:java.io.IOException là gì: trường tiêu đề không hợp lệ?

jar cvfm myjar.jar manifest.txt *.class 

tôi nhận được ngoại lệ sau:

java.io.IOException: invalid header field 
    at java.util.jar.Attributes.read(Attributes.java:410) 
    at java.util.jar.Manifest.read(Manifest.java:199) 
    at java.util.jar.Manifest.<init>(Manifest.java:69) 
    at sun.tools.jar.Main.run(Main.java:171) 
    at sun.tools.jar.Main.main(Main.java:1176) 

gì có thể là lý do tôi đang nhận được những trường hợp ngoại lệ?

Trả lời

6

Tôi đoán rằng có sự cố với tệp kê khai của bạn. Cung cấp cho nó một cái nhìn để xem nếu bạn đã có một lỗi đánh máy trong tên của một biến tiêu đề.

+0

một biến tiêu đề là gì? –

+0

Đọc kỹ phần này: http://docs.oracle.com/javase/tutorial/deployment/jar/ – duffymo

0

"jar -cvmf" thay vì "jar cvfm" nên giải quyết lỗi trên

0

tôi giải quyết một vấn đề tương tự. Nó luôn luôn là tiêu đề đầu tiên biểu hiện làm cho JAR ném một "header không hợp lệ" IOException. Vì vậy, tôi đoán đó là BOM của một tập tin utf-8 làm cho Jar không thể hiểu được. Mặc dù tôi nghĩ rằng tôi đã đọc một nơi nào đó nói rằng một tệp kê khai nên utf-8 được mã hóa, tôi đã lưu tệp mf của mình vào ANSI bằng Notepad của Windows và JAR chỉ ngừng phàn nàn về tên tiêu đề.

0

Một sai lầm ngu ngốc để làm (mà tôi đã làm) là để làm jar cvfm manifest.txt myjar.jar *.class thay vì jar cvfm myjar.jar manifest.txt *.class

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