lỗi keytool: java.io.IoException: Định dạng AVA không chính xác


179

Tôi mới phát triển Android; Khi tôi đang cố gắng ký vào ứng dụng, tôi đã gặp phải lỗi sau. Bất cứ ai có thể giúp tôi về vấn đề này?

keytool error :java.io.IoException:Incorrect AVA format

Tôi đã tìm thấy một số giải pháp trên các diễn đàn, ví dụ tôi cần chạy debug.keystorenhưng tôi không thành công.



Câu trả lời:


476

Có thể bạn đã nhập ký tự bất hợp pháp (đại loại như, (dấu phẩy)) trong trường cho Tên, Tổ chức hoặc ở một nơi khác.

Tất nhiên, nếu bạn thực sự muốn một số charachter có thể được thoát với dấu \


21
Chỉ cần FYI, nếu bạn thực sự muốn có dấu phẩy trong một trường, bạn có thể thoát nó bằng dấu gạch chéo hàng đầu, ví dụ Acme \, Inc. Xem docs.oracle.com/javase/6/docs/technotes/tools/solaris/ . Điều này cũng hoạt động trong hộp thoại ký của IDE Eclipse.
Yojimbo

1
Đối với tôi, đó là dấu + trong trường "Tổ chức". Chuẩn bị với một dấu gạch chéo ngược đã thực hiện thủ thuật, cảm ơn Yojibmo!
Chad Schultz

4
Ồ, tôi đã có thể mất nhiều ngày cố gắng để tìm ra điều này và đó là một dấu phẩy trong tên tổ chức của tôi (tôi đã sử dụng "..., LLC"). Cảm ơn rất nhiều.
akousmata

+1 Đây phải là câu trả lời được chấp nhận. Ngoài ra, cần có một kiểm tra khi người dùng nhập (dấu phẩy) (,) hoặc ký tự đặc biệt, trình hướng dẫn xuất khẩu sẽ cho người dùng biết hoặc chỉ vào hộp văn bản cụ thể đó không cho phép thay đổi.
Zubair Ahmed

1
Vấn đề đối với tôi là mã quốc gia. Tôi đặt "+1" và rõ ràng dấu + đã tăng ngoại lệ.
Donato

50

Tôi đã gặp phải một lỗi trong khi cố gắng xuất tệp .apk đã ký với ADT của Eclipse. Lỗi giống như lỗi của bạn. Trong trường hợp của tôi, tôi đã sử dụng dấu + trước mã quốc gia. Bằng cách xóa dấu + khỏi tên này đã khắc phục sự cố và cho phép tôi xuất hoàn toàn tệp .apk đã ký. Ngoài ra, lỗi này có thể xảy ra khi sử dụng dấu phẩy, dấu gạch chéo, dấu chấm phẩy, dấu ngoặc kép.


Cảm ơn. Tôi đã sử dụng dấu '+'. )
DmitryKanunnikoff

Cảm ơn. Điều này đã giải quyết vấn đề của tôi, tôi đã sử dụng + trong mã quốc gia
Khizar Hayat

20

Bạn đã cố sử dụng các ký tự đặc biệt trong khi xuất apk. Bạn không thể sử dụng các ký tự đặc biệt này trong bất kỳ trường nào được hiển thị trong khi tạo apk. Bộ ký tự đặc biệt bao gồm:

  • Dấu phẩy (,)
  • Biểu tượng bổ sung (+)
  • Dấu ngoặc kép (")
  • Dấu gạch chéo ngược ("\")
  • Dấu ngoặc nhọn (<và>)
  • Bán đại tràng (;)

7

Tôi đã giải quyết các Ngoại lệ này bằng cách thay đổi mã quốc gia:

+91 đến India


Đối với trường này, bạn nên sử dụng quốc gia iso 3166-1 , trong trường hợp của bạn là "IN"
PassKit

6

Tôi gặp phải lỗi này khi tôi không đặt tùy chọn tên phân biệt nào cả. Điều này đã được sửa bằng cách đặt tùy chọn thành một chuỗi được định dạng hợp lệ.

lệnh này không thành công với ngoại lệ định dạng AVA: (ngắt dòng được thêm cho mức độ dễ đọc)

C:\Program Files\Java\jdk1.6.0_45\jre\bin>keytool 
-genkey -v -dname PatrickTaylor -validity 10000 
-keystore C:\drops\patrickkeystore 

Lệnh này đã hoàn thành thành công:

C:\Program Files\Java\jdk1.6.0_45\jre\bin>keytool 
-genkey -v -dname PatrickTaylor -validity 10000 
-keystore C:\drops\patrickkeystore 
-dname "cn=Patrick Taylor, ou=engineering, o=company, c=US"

4

điều này "Có lẽ bạn đã nhập ký tự bất hợp pháp (đại loại như, (dấu phẩy)) trong một trường cho Tên, Tổ chức hoặc một nơi nào khác." làm việc cho tôi. Tôi đã có một dấu phẩy trên tiểu bang hoặc tỉnh. vui lòng đánh dấu câu trả lời này theo quy tắc là câu trả lời; as + in +91 là một ký tự đặc biệt.


Đối với tôi, lỗi là do dấu phẩy giữa tên công ty và llc. (cảm ơn bạn kithley sithole).
tmr

1

Chars đặc biệt / thoát khỏi tất cả các câu trả lời tốt / có thể là vấn đề; bạn đã không chia sẻ dòng lệnh "keytool" thực tế của mình để khó đưa ra câu trả lời chính xác. Nếu bạn đang cố gắng tạo một cặp khóa pub / private ("-genkey Pair"), thì có một vấn đề là tên phân biệt đối tượng chứng nhận (" -dame " arg) không được chỉ định trong X.500 AVA chính xác ( Định dạng " A ttribution- V alue- A sserts"). Ví dụ: bỏ "CN =" phía trước tên chung của chủ đề (CN). Param sẽ trông giống như thế này:

keytool ... -dname="CN=SomeCertSubject" ...

Trong tên phân biệt param này, " CN " ("Tên thường gọi") là " A ttribution", " someCertSubject " là " V alue".


0

Không thể google nói "Ký tự không hợp lệ". Thay vào đó, họ nói "Định dạng AVA Incorret" Loại bỏ mọi ký tự không phải chữ và số, không có dấu và không có chữ cái lạ.


xin vui lòng cho câu trả lời thích hợp!
Amanuel Nega
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.