티스토리 뷰

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는 확실히 존재하는 상황이다.

 

 

 

 

해결법

https://blog-001.tistory.com/12

댓글
최근에 올라온 글
최근에 달린 댓글
링크