티스토리 뷰
728x90
학교에서 과제를 하던 도중, Java를 이용하여 Mysql과 연결을 하기 위해 코드를 작성하였다.
하지만 MainApp.java를 실행시키자 아래와 같은 에러가 발생하여 더 이상 진행할 수 없게 되었다.
Exception in thread "main" org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Cannot load JDBC driver class 'com.mysql.cj.jdbc.Driver.class'
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:371)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:452)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:462)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:473)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:480)
at kr.ac.hansung.csemall.OfferDAO.getRowCount(OfferDAO.java:20)
at kr.ac.hansung.csemall.MainApp.main(MainApp.java:13)
Caused by: java.sql.SQLException: Cannot load JDBC driver class 'com.mysql.cj.jdbc.Driver.class'
at org.apache.commons.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2203)
at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2104)
at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1563)
at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:157)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:115)
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:78)
... 7 more
Caused by: java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver.class
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at org.apache.commons.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2197)
... 12 more
이와 연관된 코드를 올려보자면,
MainApp.java
package kr.ac.hansung.csemall;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp {
public static void main(String[] args) {
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext("kr/ac/hansung/conf/beans.xml");
OfferDAO offerDAO = (OfferDAO)context.getBean("offerDAO");
System.out.println("RowCount = " + offerDAO.getRowCount());
context.close();
}
}
beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<context:property-placeholder
location="kr/ac/hansung/props/jdbc.properties" />
<context:annotation-config></context:annotation-config>
<context:component-scan base-package="kr.ac.hansung.csemall"></context:component-scan>
<bean id="offerDAO" class="kr.ac.hansung.csemall.OfferDAO">
<property name="dataSource" ref="dataSource"></property>
</bean>
</beans>
jdbc.properties
jdbc.driverClassName=com.mysql.cj.jdbc.Driver.class
jdbc.url=jdbc:mysql://localhost:3306/csemall?characterEncoding=UTF-8&serverTimezone=Asia/Seoul
jdbc.username=(본인의 아이디)
jdbc.password=(본인의 패스워드)
pom.xml
--- 생략 ---
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.5.0</version>
</dependency>
<!-- https://mvnrepositoy.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
---생략---
Error 를 살펴보면 해당 경로에 Class를 찾을 수 없다고 하는 것 같은데 아래와 같이 Driver.class는 확실히 존재하는 상황이다.
해결법
'개발 일기' 카테고리의 다른 글
[Visual Studio] Visual Studio 팁 정리 ( 단축키, 간단한 팁 등등 ) (0) | 2020.05.18 |
---|---|
[Oracle] 오류 ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. (0) | 2020.01.12 |
[자바(Java)] Mysql과 JDBC 연결 중 오류 해결 (0) | 2019.11.21 |
[MySQL Server] MySQL Server 설치 오류 해결법 (0) | 2019.11.20 |
[자바(Java)] 익명 클래스(Anonymous inner class)란? (0) | 2019.11.06 |
댓글