리눅스 환경에서 Springboot Thymeleaf(View) Templates을 가져오지 못하는 오류 + 해결

 

열심히 프로젝트를 하던 도중에.. API 서버를 개발한 뒤, Linux 환경에서 빌드 및 배포를 진행했었다.

현재 개발하는 mac 환경에서는 다 잘 되는데.. 웹 컨트롤러로 요청을 받으면, 뷰 템플릿을 찾지 못하고 에러가 발생하는 것이었다!!

여러 시도를 해봤다..

 

시도 1. 실제 파일 위치와 경로 확인

src/main/resources/templates 디렉터리 내에 파일이 있는지 확인하고, 대소문자를 확인해 봤다.

 

결과 - 이상 무

 

시도 2. Thymeleaf 구성 설정

application.properties에서 타임리프 설정을 확인했다.

 

spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html

 

결과 - 이상 무


 

가만 생각해 보니, 여기까지 문제가 있었다면 현재 개발하는 mac 환경에서도 문제가 발생하지 않았을까..??

경로가 문제라면, 테스트 파일을 만들어서 다른 문제 될만한 것을 제외하고 컨트롤러를 만들어 가면서 문제의 범위를 점차 줄여보도록 했다. 그렇게 범위를 줄여보며 정보를 계속 찾아보다가 결국 해결 완료!

 

시도 3. Thymeleaf의 템플릿 경로 수정

view 페이지를 만들어나가면서 공통으로 사용되는 html 코드를 줄이기 위해

 

<head th:replace="~{/include/Common.html :: head}"></head>

 

와 같은 코드를 작성했다. 리눅스 환경에선 절대 경로보단 상대 경로를 지정해 줘야 되는데..

나는 여기서 절대 경로를 지정해 줘서 컨트롤러에선 view 파일을 잘 찾았지만, 해당 파일을 가져오고 replace 하는 도중에 에러가 발생한 것이었다!!

 

해결 방안

<head th:replace="~{include/Common.html :: head}"></head>

 

다음과 같이 내부 html에서 절대 경로를 상대 경로로 변경!

 

결과 - 아주 잘 됨

 

기분은 좋지만.. 아직 해야 될 것이 많으니 탄력받아서 계속 진행해 보자!!