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에 추가해주면됩니다 !