본문 바로가기
버그일기

[tiles] org.xml.sax.SAXParseException 에러

by xunxou 2022. 4. 26.

스프링 mvc 프로젝트에 tiles 프레임워크를 설정하는중 에러가 발생했다.
InternalResourceViewResolver 를 통해서 페이지를 호출했을때는 화면이 정상적으로 표시되는데 tiles를 적용하면 다음과 같은 에러가 발생했다.

SEVERE: 경로 [/프로젝트명]의 컨텍스트 내의 서블릿 [appServlet]을(를) 위한 Servlet.service() 호출이, 근본 원인(root cause)과 함께,
예외 [Request processing failed; nested exception is org.apache.tiles.definition.DefinitionsFactoryException: XML error reading definitions.]을(를) 발생시켰습니다.
org.xml.sax.SAXParseException; lineNumber: 3; columnNumber: 19; Document is invalid: no grammar found.


tiles 를 정의하는 xml 상단 dtd 를 누락해서 생긴 에러였다.
아래는 잘못된 코드 예시이다.

<?xml version="1.0" encoding="UTF-8"?>

<tiles-definitions>
	...


아래와 같이 상단에 dtd 를 정의하면 해당 에러가 해결됨을 확인할 수 있다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
   "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
   "http://tiles.apache.org/dtds/tiles-config_3_0.dtd"> 

<tiles-definitions>
	...


에러나 오타가 없고 올바르게 정의했는데도 위와 같은 에러가 발생한다면 상단의 dtd 구문을 확인해보면 좋을 것 같다.



아래의 아파치 tiles 홈페이지를 참고했다.
Apache Tiles - Framework - Creating Tiles Pages