728x90
반응형
JAR 파일 실행 시 "Invalid signature file digest for Manifest main attributes" 오류 해결 방법
문제 상황
JAR 파일을 실행하려고 할 때 아래와 같은 오류가 발생하는 경우가 있다.
Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
이 오류는 주로 import한 다른 JAR 파일에 서명(Signature)이 포함되어 있고, 이를 다시 패키징할 때 문제가 발생하여 생긴다.
해결 방법
이 문제를 해결하려면 JAR 파일 내부의 META-INF 폴더에 있는 서명 파일을 제거해야 한다. 아래 명령어를 사용하여 서명 파일을 제거하면 정상적으로 실행할 수 있다.
🔹 해결 명령어 실행
zip -d 파일명.jar 'META-INF/*.SF' 'META-INF/*.RSA' 'META-INF/*.DSA'
🔹 명령어 설명
- zip -d: ZIP 압축 파일(JAR 파일은 ZIP 형식)에서 특정 파일을 삭제하는 명령어
- 'META-INF/*.SF': 서명 정보 파일 제거
- 'META-INF/*.RSA': 서명 인증서 파일 제거
- 'META-INF/*.DSA': 서명 관련 DSA 파일 제거
추가 해결 방법 (JAR 재패키징)
만약 위의 방법으로도 해결되지 않는다면, 서명이 포함된 JAR을 제외하고 직접 필요한 라이브러리를 추가하여 다시 빌드하는 것이 좋다.
1️⃣ Gradle 사용 시 implementation으로 라이브러리를 추가하고 다시 빌드
dependencies {
implementation 'group:artifact:version'
}
2️⃣ Maven 사용 시 dependency로 라이브러리를 추가하고 다시 빌드
<dependencies>
<dependency>
<groupId>group</groupId>
<artifactId>artifact</artifactId>
<version>version</version>
</dependency>
</dependencies>
3️⃣ JAR 재패키징 후 실행
java -jar 파일명.jar
결론
이 오류는 JAR 파일 내의 서명 정보가 유효하지 않거나, 재패키징할 때 손상된 경우에 발생한다. 위 방법을 사용하여 META-INF 내 서명 관련 파일을 제거하거나, 직접 필요한 라이브러리를 추가하여 JAR을 다시 패키징하면 문제를 해결할 수 있다.
728x90
반응형