Blog

[Spring][iLanD] [빌드] Jar 빌드 이후 실행 시 타임리프 트러블슈팅

Category
Author
Tags
PinOnMain
1 more property
Jar 빌드 및 실행에서의 문제 발생
우선 프로젝트 개발환경 외 다른 PC에서의 프로젝트 클론, 실행 시 문제가 발생함. DB 설정까지 똑같이 구성했지만 처음보는 오류였음.
타임리프 뷰리졸버의 문제 발생. 메인 페이지는 접속이 가능한데 다른 모든 페이지가 접근 불가가 나타남. 페이지 또는 데이터 로딩에 문제가 발생할때 나타나는 Whitelabel Error가 나타나며
서버 내 실행 이후 나타난실제 오류코드는 다음과 같음. 주요 내용은 결국 THYMELEAF 에서 발생. 모든 페이지가 접근 불가능. 이상하게 메인페이지는 접속이 된다?
2023-12-02T00:18:05.606+09:00 INFO 3462 --- [ main] o.s.m.s.b.SimpleBrokerMessageHandler : Started. 2023-12-02T00:18:15.333+09:00 INFO 3462 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2023-12-02T00:18:15.335+09:00 INFO 3462 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 0 ms 2023-12-02T00:18:17.376+09:00 ERROR 3462 --- [nio-8080-exec-7] org.thymeleaf.TemplateEngine : [THYMELEAF][http-nio-8080-exec-8] Exception processing template "/contents/game": Error resolving template [/contents/game], template might not exist or might not be accessible by any of the configured Template Resolvers org.thymeleaf.exceptions.TemplateInputException: Error resolving template [/contents/game], template might not exist or might not be accessible by any of the configured Template Resolvers at org.thymeleaf.engine.TemplateManager.resolveTemplate(TemplateManager.java:869) ~[thymeleaf-3.1.2.RELEASE.jar!/:3.1.2.RELEASE]
Java
복사
ChatGPT 또한 돌아돌아가는 말도안되는 클래스 패스와 관련된 해결책을 주길레 뷰 컨트롤러들의 차이점을 직접 살펴봄
가장 큰 차이점은 / 슬래시의 유무였다. 클래스패스는 이미 application.properties에서 지정된 상태이다.
spring.thymeleaf.prefix=classpath:/templates/ spring.thymeleaf.suffix=.html
Java
복사
여기서 문제는 뷰컨트롤러의 반환값이 return “index”; 인 경우에 문제가 없던 것이였으며, return “/index”; 인경우에 prefix와 더해져서 /templates//index.html 와 같이 중간에 더블슬래시 처리되던 문제였다. 이상한점은 개발IDE에서 그냥 프로젝트를 직접 실행하는 경우엔 /index 와 같은 형태도 실행이 되었다는 것이다.. 잘못하면 크게 돌아가서 해결도 못할뻔했던 문제로 타임리프를 사용할때는 확인해두어야 할 사항같다.