'Jdbc Driver class not found'에 해당되는 글 1건

  1. 2009.11.10 Maven SQL Plugin 사용시 JDBC Driver 찾지 못하는 문제
6장 Maven을 이용한 빌드 자동화 ⅱ 
01. SQL 플러그인으로 데이타베이스 통합하기 

실행도중 해결하지 못한 문제다.
SQL 플러그인으로 개발 과정에서의 데이타 베이스 관련 문제를 해결할수 있는 방편중 하나이다.
테스트/개발 기간에 사용하는 데이타베이스를 프로젝트를 Deploy하는 시기에 초기화를 하는 과정이었다.

JDBC Driver를 찾지 못하는 문제가 계속 발생하였다.

1. Local Repository 검색
pom.xml에 의해 선언된 라이브러리는 Repository에 저장되게 되는데
그 위치는 MAVEN_HOME의 settings.xml에 선언된다. 
  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ~/.m2/repository
     <localRepository>D:\MyDev\MavenRepository_test</localRepository>
  -->
     <localRepository>~/.m2/repository</localRepository>
유저 홈디렉토리에 저장되게 되는데 XP라서 C:\Documents and Settings\Administrator\.m2 디렉토리에 저장되게 되는데, 공백이 들어가서 문제가 생기나 싶어서, 다른 디렉토리로 변경하여 빌드해봄.
<localRepository>D:/MyDev/MavenRepository</localRepository>
결과는 동일함. mysql을 사용했었는데 connector를 찾지 못함.

2. pom.xml 설정 체크 및 변경
<project>
...
   <dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.5</version>
<scope>compile</scope>
<systemPath>D:/MyDev/MavenRepository_test/mysql/mysql-connector-java/5.0.5/mysql-connector-java-5.0.5.jar</systemPath>
</dependency>
   </dependencies>
...
</project>
프로젝트 엘리먼트 자식엘리먼트로 <dependencies>아래 설정하고 
  <properties>
<jdbc.host>localhost</jdbc.host>
<jdbc.driver>com.mysql.jdbc.Driver</jdbc.driver>
<jdbc.dbname>mywebproject</jdbc.dbname>
<jdbc.username>root</jdbc.username>
<jdbc.password>vudghkfmf</jdbc.password>
  </properties>
로 <properties>에서 정의하고 <plugin>에서 불러다 사용하는 것으로 되어있었지만,
Maven 사이트의 예제대로 변경.
다음이 Maven예제 스타일.
<plugin>
.....
  <configuration>
          <driver>com.mysql.jdbc.Driver</driver>
          <url>jdbc:mysql://${jdbc.host}/${jdbc.dbname}</url>
          <username>${jdbc.username}</username>
          <password>${jdbc.password}</password>
  </configuration>

   <executions>
<execution>
<id>process-test-resources</id>
<phase>process-test-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<driver>${jdbc.driver}</driver>
<url>jdbc:mysql://${jdbc.host}/mysql</url>
<sqlCommand>drop database ${jdbc.dbname}</sqlCommand>
<autocommit>true</autocommit>
<onError>continue</onError>
</configuration>
</execution>
...
<plugin>의 하위 엘리먼트로 <configuration> 엘리먼트에서 DB url, 계정, 패스워드등을 설정하는 스타일로 변경.

하지만, build시 오류는 계속 발생함.

3. 구글링 결과
비슷한 케이스를 검색한 결과, MAVEN_HOME/lib에 jdbc 드라이버를 넣고 빌드하는 경우는 오류가 나지 않았다.
같은 방법으로 로컬 저장소에 있는 jar파일을 복사하여 빌드하니 빌드가 이루어짐.
의문점은 의존성(dependency)을 정의하여 필요한 라이브러리를 다운로드 할수 있는데, 왜 Driver 클래스를 찾을수 없다고 나오는지 의문임. 의존성에 따라서 다운받은 jar파일을 사용하면 될것아닌지....

ps.
..참 따라하기 힘든 책이다 ㅋㅋ. 환경이 변하고, 버전이 업되기 때문에 따라하는데 오류 속출...



저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 영겁회귀

티스토리 툴바