Intro
no main manifest attribute, in 에러 발생
지금까지는 외장 톰캣을 이용해서 어플리케이션을 배포 해 왔습니다. 하지만 스프링부트는 내장 톰캣을 가지고 있기 때문에 단독실행이 가능한데요, 단독 실행 했을때와 외장 톰캣으로 띄웠을때 각각의 성능 및 부하 테스트를 진행 해 보고 더 나은 방향으로 진행하기로 하여 기존에 만들어둔 war 파일을 바로 실행 해 보았습니다.
문제
그런데 기대와는 다르게 manifest 관련 에러가 발생 했는데요, 복잡한 문제는 아니지만 생각보다 검색했을 때 뚜렷한 해법을 찾기가 어려웠기 떄문에 글로 남겨 보려고 합니다
실행이 안되는 상황의 war 패키지 내 트리 구조
원인
말그대로 manifest 파일을 찾지 못했기 때문입니다. jar 혹은 war파일을 실행 가능하게 만들면 META-INF/MANIFEST.MF
파일이 있어야 하는데요, 스프링 부트 메이븐 플러그인을 사용하면 직접 작성하지 않아도 됩니다. 사실 위의 경로를 보면 필요한 경로에 필요한 파일이 존재 하는데도 찾지 못한다는 에러가 나오고 있네요.
해결
pom.xml 에서 아래와 같이 작성 해 두었었는데요
<build>
<finalName>adm</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
...
<plugins>
</build>
before
즉시 실행 가능하게 빌드하도록 configuration <skip>true
부분을 제거해 줍니다.
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
after
이제 다시 Maven 으로 빌드를 해 봅니다.
이번에는 특이하게 adm.war 파일과 adm.war.original 파일 이렇게 두개가 따로 생성되었습니다.
확인 해 보니 트리 구조가 살짝 달라졌습니다. /org/springframework/boot/loader/
가 추가되었고, WEB-INF
하위에 lib-provided도 추가 되었습니다.
이제 단독 실행이 될까요?
java -jar ./adm.war
이제 정상적으로 단독실행이 됩니다.
'Development > Daily Error' 카테고리의 다른 글
Spring Boot2.6에서 Springfox3 실행 실패 에러 (0) | 2022.05.08 |
---|---|
IntelliJ IDEA에서 Lombok 패키지를 못 찾을 때 (0) | 2022.04.27 |
일간에러) java: incompatible types: java.lang.String cannot be converted to org.slf4j.Marker (0) | 2022.04.20 |
일간에러) 3 Spring WebApplicationInitializers detected on classpath (2) | 2022.04.15 |
일간에러) application.yml 파일을 못읽을때 spring.config.location (0) | 2022.04.05 |