2013-08-26 1 views
12

다음과 같은 문제가 생겼습니다. .jar 개 이상의 파일이있는 파일을 만들면 java가 "잘못되었거나 손상된 jarfile"이라고 불평합니다. 예 : 나는 조금 덜 파일을 사용하는 경우왜 자바 항목이 많은 jar 파일에 대한 불평?

$ # in fresh dir 
$ for i in {1..70000}; do touch $i; done 
$ jar cf app.jar {1..70000} 
$ java -jar app.jar 
Error: Invalid or corrupt jarfile app.jar 

는하지만, 그것은 작동 :

$ jar cf app.jar {1..60000} 
$ java -jar app.jar 
no main manifest attribute, in app.jar 
내가 65K 파일이 오래된 .zip 파일 형식으로 제한하지만, 자바 7은 기본적으로 ZIP64를 사용해야가 있다고 들었

이미. 왜 이런 일이 일어나는 걸까요? 그것을 고칠 수있는 방법이 있습니까?

+0

항아리는 ZIP의 자바의 변형 :


FWIW, ZIP64 형식 JAR 파일의 javac의 처리의 버그도 있습니다. 문제가 해결되었을 수도 있지만, 다른 개선 사항의이면에있을 수 있습니다. JAR 파일에 여러 개의 파일을 두지 않기를 권장합니다.) –

+1

@PeterLawrey - 예, 작은 여러 .jar 파일을 분할하는 것은 확실한 해결 방법이지만 매우 까다 롭습니다. 어쨌든, 파일 양에 대한 하한선이 정상적인 것은 아닙니다. 이것에 벌써 벌레가 벌써있을거야? – Rogach

+0

나는 희망한다. 그러나 그것을 찾을 수 없다면 다른 로그를 기록 할 수있다. –

답변

13

왜 이런 일이 발생합니까?

그것은 자바 1.7.0 (일명 자바 7)의 버그

Java 1.7.0 p40 이상에서 수정되었습니다.

해결 방법이 있습니까?

버그 보고서에 따르면 Java 1.7.0의 해결 방법은 -jar 옵션을 사용하지 않고 응용 프로그램을 시작하는 것입니다.

+0

실행 파일을 만드는 경우 어셈블리 병 그리고 유감스럽게도 숫자 파일이 64K 이상 증가하면 (저와 함께) java 로 실행할 수 없습니다. –

+1

@SoumyaKanti - Java 8, 예를 들면. –

관련 문제