rocklike
53
2017-08-13 02:02:27.0 작성 2017-08-13 02:06:40.0 수정됨
2
571

local maven repository에서 깨진 jar 파일들을 찾아서 지워주는 아주 간단한 프로그램


안녕하세요.

maven, gradle 기반으로 작업을 할때, local maven repository에 있는 jar파일들이 깨져서 알수 없는 컴파일 에러 / runtime 에러가 나는 경우가 종종 있습니다.

보통, 아래와 같은 에러 메시지가 나오지요.

java.util.zip.ZipException: invalid LOC header (bad signature)


이런 경우가 아주 드물게 발생하더라도, 한번씩 발생하면 원인을 알아내는게 번거롭고 짜증이 납니다.

이럴때는 깨진 jar파일의 디렉토리를 지우고 다시 받으면 되는데, 일단은 어떤 jar파일이 깨졌는지 파악하기가 간단치 않고, 적잖이 시간이 걸리면서 확 욕이 올라옵니다.

그렇다고 .m2\repository  디렉토리 밑에 있는 것을 모두 지우자니, 그 많은 jar파일들을 다시 받는 것도 힘들고(제 경우에는 2.5G정도 되네요), 또 다시 받는 와중에 jar파일이 깨지는 경우도 있으니, 그리 간단한게 아닙니다.

예를 들어 spark, kafka등의 dependency가 있는 maven 프로젝트를 구성했는데 문제가 발생했을때, 그 많은 참조 jar들을 다 뒤져서 삭제한다는것은 참으로 깝깝한 일이지요.


설명이 길었는데, 이럴때, 깨진 jar파일들의 디렉토리를 지워주는 아주 간단한 프로그램입니다.


- 파일 다운로드 : https://github.com/SoonPoong-Hong/HongSimpleUtils/raw/master/HongSimpleUtils/files/MavenReopositoryCorruptedJarCheck.jar

- 실행 : java -jar MavenReopositoryCorruptedJarCheck.jar
  (java 8로 컴파일됐습니다.)

- 사용법 : 왼쪽 버튼으로 jar 파일 깨진것을 검사.
           검사가 끝난후, 오른쪽 버튼으로 해당 디렉토리의 파일들 삭제.

- 파일 삭제후 : maven을 통해서 jar를 다시 받음. eclipse라면, 해당 프로젝트 선택 - (오른쪽버튼 메뉴로) maven - update project 실행


소스는 jar파일 안에 있습니다.

2
1
  • 댓글 2

  • 바로서기
    739
    2017-08-13 15:01:31.0

    위와 같은 에러를 겪어 보지는 못했지만..

    유용한 프로그램일 것 같네요 ㅋ


    0
  • coding8282
    1k
    2017-08-13 23:14:15.0

    예 저도 이거 짜증났어요. 

    0
  • 로그인을 하시면 댓글을 등록할 수 있습니다.