잘 돌리고 있던 프로젝트에서 갑자기 에러가 발생했다.
IDE를 인텔리제이로 변경하려고 이클립스 소스를 새로 build 한 후, 서버를 시작하니 에러가 발생해 다시 이클립스로 와서 확인해보니 동일한 문제가 발생...
❗ 에러 내용
org.xml.sax.SAXParseException: 요소 유형 "tiles-definitions" 을(를) 선언해야 합니다.
...
nested exception is org.apache.tiles.definition.DefinitionsFactoryException: XML error reading definitions
혹시 몰라 maven clean, update project, maven install, maven build 한 후 처리했다.
위의 오류는 tiles 버전이 맞지 않을 때 발생하는 오류였다.
사용하는 부분들의 버전을 확인해 보았다.
1️⃣ pom.xml
pom.xml 의 tiles 버전 확인 : 현재 버전은 3.0.8 이었다.
2️⃣ action-servlet.xml
tiles3 resolver 확인 : 현재 value 는 tiles3 으로 설정되어 있었다.
<beans:bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<beans:property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView" />
<beans:property name="order" value="90" />
</beans:bean>
3️⃣ common-tiles.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"
"http://tiles.apache.org/dtds/tiles-config_2_1.dtd">
?! 사용하는 tiles header의 definitions 가 2.1 으로 설정된것을 발견했다.
아무래도... 그전에 사용하던 캐시들이 남아있다가 새로 clean 하고 build 하면서 이제서야 오류를 발생시켰던 것 같다.
버전에 맞게 바꿔준다.
<?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">
[참고]
'Spring' 카테고리의 다른 글
[Spring] spring 에 swagger 적용하기 (0) | 2021.07.26 |
---|