[JAVA] H2 DB에 JDBC 연결시 예외 unexpected status 16777216 또는 Could not load requested class 해결 방법
자바[Java] 2018. 7. 25. 23:12하이버네이트를 H2 DB에 연동하여 사용하려고 프로젝트를 세팅하고 쿼리를 수행하려고 하니 다음과 같은 첫번째 예외가 발생했습니다.
첫번째 예외
Exception in thread "main" javax.persistence.PersistenceException: Unable to build entity manager factory
...생략...
Caused by: org.hibernate.exception.JDBCConnectionException: Unable to set auto-commit (false)
...생략...
Caused by: org.h2.jdbc.JdbcSQLException: Connection is broken: "unexpected status 16777216" [90067-187]
원인1
예외를 살펴보니 실질적인 원인은 마지막 줄의 Caused by에 h2.jdbc 예외인 Connection is broken: "unexpected status 16777216" [90067-187] 부분입니다. 의외로 원인을 빨리 발견했는데, h2 db 버전과 h2의 JDBC 버전이 맞지 않았던 것입니다.
해결1
메이븐 pom.xml 설정을 통해 jdbc 버전을 높여주니 예외가 해결되었습니다. 그러나!!
두번째 예외가 발생합니다.
Exception in thread "main" javax.persistence.PersistenceException: Unable to build entity manager factory
...생략...
Caused by: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [org.h2.Driver]
...생략...
Caused by: java.lang.ClassNotFoundException: Could not load requested class : org.h2.Driver
원인2
두번째 원인으로는 H2 JDBC Driver를 load 하지 못하는 문제입니다. 마지막 줄의 를 java.lang.ClassNotFoundException: Could not load requested class : org.h2.Driver 통해 확인 가능합니다.
해결2
이상하게 pom.xml을 통해 설정해주었는데 불구하고 인식하지 못했습니다. 이클립스 개발환경을 기준으로 설명하자면 다음과 같습니다.
자신의 h2 db가 설치된 경로의 bin 디렉터리를 보면 h2 db .jar 파일이 존재합니다.
프로젝트를 선택 후 Alt + Enter 또는 마우스 우클릭 후 properties 클릭합니다.
프로젝트 설정에서 Java Build Path -> Libraries -> Add External JARs...
h2 .jar 선택 후 열기
적용 후 닫으면 Driver가 인식됩니다.
아래와 같이 보이면 됩니다.
-