오류메시지
nested exception is org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 90; 문서 루트 요소 "mapper"은(는) DOCTYPE 루트 "null"과(와) 일치해야 합니다.
sqlSessionFactory에서 document instance 생성 시 오류가 발생했다는 메시지가 떴다.
원인
XML(Extensible Markup Language)은 데이터를 쉽게 공유하기 위해 만들어졌다. 작성자가 데이터를 특정한 형태로 저장해두면, 읽는 쪽은 규칙대로 읽는다. 그래서 작성규칙이 있어야 한다.
그것을 정해놓은 스펙 문서를 DTD(Document Type Definition, 문서 유형 정의) 라고 하고, xml 파일의 가장 윗 부분에 명시하여 해당 xml 문서가 어떤 스펙으로 작성되어 있는지를 알린다.
이클립스에서 xml 을 작성할 때 DTD를 명시하지 않으면 warning 을 띄운다.
DTD는 태그를 통해 아래와 같이 선언한다. DTD 파일의 위치를 나타내는 url 은 실제 접속 가능하고, 브라우저를 통해 접속시 dtd 파일을 다운로드 받는다.
참고 : https://repacat.tistory.com/26
해결법
아래의 <!DOCTYPE> 태그를 XML파일 상단에 추가해준다.
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
'Java' 카테고리의 다른 글
[Java] 특정연도부터 올해까지 출력되는 리스트 구하기 (0) | 2020.11.24 |
---|---|
Given string does not represent a number in proper format (0) | 2020.11.03 |
[자바 초보 팁] 객체의 특징 (0) | 2020.10.27 |
[Java/Spring] String.valueOf 사용 시 주의점 (0) | 2020.09.07 |
[Java/SQLGate] 문에서 결과 집합을 반환하지 않았습니다 오류 해결 (0) | 2020.07.30 |
댓글