keytool 오류 : java.io.IoException : 잘못된 AVA 형식


179

나는 안드로이드 개발에 익숙하지 않다. 응용 프로그램에 서명하려고 할 때 다음 오류가 발생했습니다. 누구 든지이 문제에 대해 나를 도울 수 있습니까?

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

포럼에서 해결책을 찾았습니다. 예를 들어 실행해야 debug.keystore하지만 성공하지 못했습니다.



그리고 이것은 : mortalpowers.com/news/…
tom_mai78101

답변:


476

이름, 조직 또는 다른 곳에 필드에 잘못된 문자 (, (쉼표) 등)를 입력했을 수 있습니다.

물론 당신이 정말로 원하는 경우 일부 charachter는 \ 기호로 탈출 할 수 있습니다


21
참고로 필드에 쉼표를 원한다면 Acme \, Inc와 같이 선행 백 슬래시로 이스케이프 처리 할 수 ​​있습니다 . docs.oracle.com/javase/6/docs/technotes/tools/solaris/…를 참조하십시오 . 이것은 Eclipse IDE의 서명 대화 상자에서도 작동합니다.
Yojimbo

1
나를 위해, 그것은 "조직"필드에서 + 기호였습니다. 백 슬래시 앞에 추가하는 것이 요크 모에 감사합니다!
차드 슐츠

4
와우, 나는 이것을 알아 내려고 노력하는 데 며칠을 보낼 수 있었고, 그것은 조직 이름의 쉼표였습니다 ( "..., LLC"를 사용했습니다). 정말 감사합니다.
akousmata

+1 이것은 정답입니다. 또한 사용자가 입력 (쉼표) (,) 또는 특수 문자를 입력 할 때 내보내기 마법사가 사용자에게 해당 특정 텍스트 상자를 알려주거나이를 허용하지 않아야한다는 것을 확인해야합니다.
Zubair Ahmed

1
나를위한 문제는 국가 코드였습니다. 나는 "+1"을 넣었고 분명히 +는 예외를 제기하고 있었다.
Donato

51

Eclipse ADT로 서명 된 .apk 파일을 내보내는 중에 오류가 발생했습니다. 오류는 오류와 동일합니다. 필자의 경우 국가 코드 앞에 + 기호를 사용했습니다. 이 이름에서 + 부호를 제거하면 문제가 해결되고 서명 된 .apk 파일을 완전히 내보낼 수있었습니다. 또한이 오류는 쉼표, 슬래시, 세미콜론, 인용을 사용할 때 발생할 수 있습니다.


감사. '+'부호도 사용했습니다. )
DmitryKanunnikoff

감사. 이것은 내가 국가 코드 +를 사용하여 내 문제 해결
Khizar 하야트

20

APK를 내보내는 동안 특수 문자를 사용하려고했습니다. APK를 작성하는 동안 표시되는 필드에서이 특수 문자를 사용할 수 없습니다. 특수 문자 세트에는 다음이 포함됩니다.

  • 쉼표 (,)
  • 추가 기호 (+)
  • 인용 부호 ( ")
  • 백 슬래시 ( "\")
  • 꺾쇠 괄호 (<및>)
  • 세미콜론 (;)

7

국가 코드를 변경하여 이러한 예외를 해결했습니다.

+91India


이 필드에서는 iso 3166-1 국가 코드 를 사용해야합니다. "IN"
PassKit

6

고유 이름 옵션을 전혀 설정하지 않았을 때이 오류가 발생했습니다. 옵션을 유효한 형식의 문자열로 설정하여 수정했습니다.

이 명령은 AVA 형식 예외로 인해 실패했습니다. (가독성을 위해 줄 바꿈이 추가되었습니다.)

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

이 명령은 성공적으로 완료되었습니다 :

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

이 "이름, 조직 또는 다른 곳의 필드에 불법 문자 (쉼표 등)를 입력했을 수 있습니다." 주나 지방에 쉼표가있었습니다. 이 답변을 규칙적으로 답변으로 표시하십시오. +91에서 +는 특수 문자입니다.


나를 위해 오류는 회사 이름과 llc 사이의 쉼표로 인해 발생했습니다. (킹슬리 시트 홀 감사합니다).
tmr

1

모든 좋은 답변을 이탈하는 특수 문자 / 문제가 될 수 있습니다. 실제 "keytool"명령 행을 공유하지 않았으므로 정확한 답변을 제공하기가 더 어렵습니다. pub / priv key 쌍 ( "-genkeypair"param)을 생성하려고한다면, 1 개의 문제는 인증 주체 식별 이름 ( " -dname "arg)이 올바른 X.500 AVA에 지정되지 않은 것입니다 ( " ttribute- V alue- ssertion") 포맷. 예를 들어, 주제 공통 이름 (CN) 앞에 "CN ="을 생략했습니다. Param은 다음과 같아야합니다.

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

이 고유 이름 PARAM에서 " CN "( "일반 이름")는 "입니다 ttribute", " SomeCertSubject는 "은 "입니다 V의 ALUE".


0

Google에서 "잘못된 문자"를 말할 수 없습니다. 대신 "Incorret AVA 형식"이라고 말합니다. 영숫자가 아닌 문자, 악센트 및 이상한 문자는 제거하십시오.


정답을 알려주십시오!
Amanuel Nega
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.