문제 ❗
팀원 분의 JDBC -> Mybatis 으로 변경하던 중 아래의 ERROR 가 발생하여 여러가지 방법을 시도해봤습니다.
문서 루트 요소 "mapper"은(는) DOCTYPE 루트 "null"과(와) 일치해야 합니다.
원인 🔧
우선 원인은 Mybatis 설정 파일에서 Mapper.xml 을 정의했지만,
해당 XML 파일에 Mybatis DTD가 정의 되어 있지 않아 발생된 ERROR 였습니다.
✋DTD 란? XML 은 다양한 마크업 언어를 만드는데 사용하는 다목적 마크업 언어 다양한 마크업 언어를 정의하기 위해서 스키마(schema)를 정의합니다. 그 스키마 (schema) 중 하나이며 DTD 문법은 아래와 같습니다. |
✋스키마(schema)란? 해당 언어에 필요한 요소와 속성을 정의하는데 필요한 정보들의 집합 스키마의 종류는 아래와 같이 두 가지가 존재합니다. 1. DTD (Doucment Type Definition) 2. XML 스키마(XSD) |
해결 ✅
처음에는 위의 에러 코드 확인보고 소스 보단 이클립스 상의 문제라 생각해서 아래 부분 확인 후 Clean
1. Window -> XML > XML Files > Validation
2. Validating files > No grammar specified : Ignore 로 수정
하지만 해결이 안되어 소스 뜯어본 결과 아래의 방법으로 해결했습니다.
1. ERROR 위치 확인
log를 확인 하였을 때 mybatis-config.xml 를 빌드하는 과정 중에 ERROR가 발생하였습니다.
2. 에러가 발생한 파일 전체적인 확인 mybatis-config.xml
DTD 정의 잘 되어있는 지 확인
3. mapper resource 중 xml 파일 확인, DTD가 정의 되어있지 않은 파일에 DTD 삽입
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
4. 삽입 후 Build 진행하면 완료
'공부' 카테고리의 다른 글
[ERROR] Gradle Build ERROR - Could not create parent directory for lock file ... (0) | 2023.07.21 |
---|---|
[ERROR] Chrome CORS 오류 해결 (0) | 2023.03.29 |
[Linux] CentOS 7 ERROR - connect network is unreachable (0) | 2023.03.06 |
[알고리즘] 알고리즘 - # 2. 배열과 자바 접근 (0) | 2023.02.23 |
[알고리즘] 알고리즘 - #1.반복문 (0) | 2023.02.15 |