도커(Docker)

[문제해결] template might not exist or might not be accessible by any of the configured Template Resolvers

아과노트 2024. 7. 10. 17:01
728x90
반응형

스프링 부트와 타임리프를 이용하는 도중에...

 

개발환경(윈도우)에서는 문제가 없었는데 리눅스에 배포 후에 다음과 같은 문제가 발생하였습니다.

 

ERROR 1 --- [io-8080-exec-10] o.a.c.c.C.[.[.[/].[dispatcherServlet] :
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed:

org.thymeleaf.exceptions.TemplateInputException: Error resolving template [/admin/login], template might not exist or might not be accessible by any of the configured Template Resolvers] with root cause

org.thymeleaf.exceptions.TemplateInputException: Error resolving template [/admin/login], template might not exist or might not be accessible by any of the configured Template Resolvers

 

삽질을 생각보다 오래 해서....

 

다른 분들은 하지 않길 바라며 글을 남깁니다.

 

해결을 위해 GPT를 열심히 돌렸는데...

 

build.gradle에 다음을 추가해 보라고 합니다.

 

sourceSets {
	main {
		resources {
			srcDir 'src/main/resources'
			// 모든 리소스를 포함
			include '**/*'
		}
	}
}

tasks.named('processResources') {
	duplicatesStrategy = DuplicatesStrategy.INCLUDE
}

 

그래도 해결이 안되니...

 

이번에는 application.yml에 다음의 코드를 넣어보라고 합니다.

 

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

 

하지만 이것도 해결이 안됩니다..

 

열심히 찾고찾은 결과...

 

생각보다 너무 단순한 원인이었습니다.

 

수정 전에 코드는 이랬는데

@Controller
public class HomeController {
	@GetMapping(value="/")
	public String index() {
		return "/index";
	}
}

 

수정 후에는 이렇게 바뀌었습니다.

 

@Controller
public class HomeController {
	@GetMapping(value="/")
	public String index() {
		return "index";
	}
}

 

차이는 바로  return 에 "/"로 시작하나 안하나 여부...

 

리눅스에서는 템플릿 파일을 지정할 때는 "/"를 붙이면 에러가 발생을 하네요.

 

다른 분들은 삽질 하지 않길 바라며...

728x90
반응형