2013-11-21 8 views
-1

Windows 컴퓨터에서 유닉스 컴퓨터로 복사되는 jar 파일이 있습니다 ... 보통 dos2unix 명령을 사용하여 창에서 복사 한 모든 파일을 변환합니다. 내가 DOS2UNIX를 사용하여 UNIX 형식으로 jar 파일을 변환 할 때 ... 나는 아래의 오류를 얻고있다 ...리눅스에서 dos2unix 명령을 실행 한 후 jar 파일을 실행하는 중 오류가 발생 함

그것은 그것에 DOS2UNIX 명령을 실행하기 전에 성공적으로 실행
Exception in thread "main" java.io.IOException: Error opening job jar: hadoop-examples-2.0.0-mr1-cdh4.3.0.jar 
     at org.apache.hadoop.util.RunJar.main(RunJar.java:135) 
Caused by: java.util.zip.ZipException: invalid END header (bad central directory offset) 
     at java.util.zip.ZipFile.open(Native Method) 
     at java.util.zip.ZipFile.<init>(ZipFile.java:127) 
     at java.util.jar.JarFile.<init>(JarFile.java:135) 
     at java.util.jar.JarFile.<init>(JarFile.java:72) 
     at org.apache.hadoop.util.RunJar.main(RunJar.java:133) 

... 어떤 생각이 왜 이런 일이?

+2

변환은 0a에서 0d0a로 바뀝니다. 따라서 해당 시퀀스가있는 압축 파일이 있었고 파일을 손상 시켰습니다. – Jekyll

답변

5

하지 마십시오. jar 파일은 zip과 같으며 이진 파일입니다. dos2unix은 ASCII 파일 (바이너리가 아님)의 줄 끝을 변환하기위한 것입니다.

+0

다른 항아리 파일을 가지고 있는데 dos2unix를 실행하고 작동 중입니다 ... 왜 모든 항아리에는 이런 현상이 발생하지 않습니다 ... 일부 항아리 파일은 dos2unix 이후에 작동하며 일부는 그렇지 않습니다 ... 왜 그럴까요? – disizjay

+0

우리에게 문제는 모든 파일을 dos2unix 형식으로 변환하는 자동 스크립트가있는 것입니다. 변환 후 일부 jar 파일은 정상적으로 실행되고 일부는 실행되지 않습니다. 우리는 문제를 파악하려고합니다. – disizjay

+0

바이트 시퀀스 '0D 0A'가 모든 바이너리 파일에 존재하지 않기 때문입니다. '0D 0A' (일명 '\ r \ n')는 캐리지 리턴 문자 다음에 개행 문자가옵니다. dos2unix는 그 시퀀스를'0A' 또는 새로운 라인으로 대체합니다. 왜냐하면 dos와 unix는 다른 라인 종료 규칙을 사용하기 때문입니다. –