Error

[Java, 자바] no main manifest attribute in 에러

차나니 2024. 5. 1. 14:33

에러

Linux에서 jar파일 실행 시 no main mainfest attribute in 에러가 발생하였다 !

찾아보니 JVM이 main메서드를 찾지 못해 발생하는 에러였다.

 

해결방법

Spring Boot 2.5.0 이상 버전과 gradle을 사용 시 빌드할 경우 아래와 같이 jar파일이 2개 생성된다고합니다.

 

1. 앱이름.jar -> bootJar Task로 생성된 것

2. 앱이름-plain.jar -> build Task로 생성된 것

 

첫 번째 jar파일은 해당 프로젝트에 필요한 모든 의존성이 같이 추가된 것으로 모두 정상적인 형태로 나오는 반면 plain.jar파일은 의존성을 제외하고 딱 프로젝트에 있는 자원들만 jar파일로 만든 것으로 spring 관련 의존성이 빠저 main메서드의 위치가 나오지 않습니다.

 

여기서 앱이름-plain.jar 파일을 java -jar로 실행하면 no main mainfest attribute in에러가 발생합니다.

결론은 ! 빌드할 때 bootJar로 빌드해라 !

 

앱 이름-plain.jar를 생성하지 않기 위해서는 아래 명령어를 build.gradle에 추가해주면됩니다 !