본문 바로가기
DevOps/DB, Oracle, MariaDB

[H2] org.h2.Driver : java.lang.ClassNotFoundException

by breezyday 2022. 7. 8.

이클립스에서 Maven Dependency에 잘 등록하였고, jar파일도 조회가 되는 데 프로그램을 실행할 때 org.h2.Driver ClassNotFuondException이 발생하는 경우가 있습니다. 원인은 Maven 설정에 있습니다. 


1. 원인 찾기 :
 - Could not load requested class : org.h2.Driver

 

프로그램을 실행하면 위와 같은 오류가 발생합니다. 

Caused by: java.lang.ClassNotFoundException: Could not load requested class : org.h2.Driver
...

 

2. Maven 설정 점검 및 Maven Dependency 점검

pom.xml

 

pom.xml을 살펴보면 h2 database가 설정이 되어 있습니다. 

위의 depedency 정보는 mvnrepository에서 가져왔습니다. 

 

 

Maven Repository는 다양한 jar 라이브러리의 의존성 설정 부분을 최신 버전과 함께 조회할 수 있는 사이트입니다. 

https://mvnrepository.com/

 

여기서 가져온 설정에 문제가 있습니다.

3. Maven Dependency 설정의 scope 변경

변경 전

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>2.1.214</version>
    <scope>test</scope>
</dependency>

 

dependency 설정에서 Scope는 라이브러리의 적용 범위를 정합니다.

여기서 <scope> 설정test로 되어 있으면 실행 시 라이브러리를 찾을 수 없습니다.

 

이 설정을 삭제하면 됩니다. 

<scope> 설정의 기본 값은 compile이며, 컴파일 및 실행 모두 Maven Repository에 설정된 라이브러리를 참조하게 됩니다.

 

dependency 설정의 Scope에 대한 보다 상세한 내용은 아래 링크를 참고해 주세요.

https://dev-handbook.tistory.com/67

변경 후

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>2.1.214</version>
</dependency>

 

위와 같이 설정하면 컴파일 및 실행 시에도 라이브러리를 참조하므로 ClassNotFoundException 문제를 해결할 수 있습니다.

 

 

이후에는 프로그램 실행 시 org.h2.Driver를 잘 찾는 것을 확인할 수 있습니다. 

 

댓글