[Spring/스프링] java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver

sbj·2023년 12월 6일

ERROR.zip

목록 보기
6/19
post-thumbnail

Problem (문제)

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver


Cause (원인)

MySQL JDBC 드라이버가 Classpath에 없을 때 발생한다.


Solution (해결법)

  1. Maven이나 Gradle 같은 빌드도구를 사용한다면, 의존성 관리 섹션에 MySQL JDBC 드라이버를 추가한다.
  2. jar 파일을 다운로드 받아서 프로젝트의 lib 폴더에 추가하는 방법도 있다.
  3. IDE에서도 Classpath를 설정하는 부분이 있으니, 해당 설정에서 MySQL JDBC 드라이버가 추가 되어있는지 확인한다.

3번으로 해결했다.

경로

Properties → Java Build Path → Classpath → Add External JARs

해당 클래스 패스에 MySQl JDBC 드라이버를 추가하여, 해결할 수 있었다!

이건 내 실수다. 기존에 build.gradle dependencies에 드라이버를 추가해주는데, 프로젝트를 다시 세팅하면서 .. 추가하지 못했고 classpath에 추가해줬다.


궁금한걸 참을 수 없다.

  1. Classpath를 추가하는 이유는?
    우선 Classpath란 Java 환경에서 클래스 파일을 찾는 경로를 지정하는 환경변수다.
    프로그램이 실행될 때, 자바 가상머신 (JVM)은 CLASSPATH 환경변수에 지정된 디렉토리, JAR 파일을 탐색해서 필요한 클래스 파일들을 로드한다.
    따라서, JDBC 드라이버와 같은 라이브러리를 사용하는 자바 프로그램을 실행하려면 해당 라이브러리가 포함된 JAR 파일이 포함되어야 한다는 것이다.

    즉, MySQL 라이브러리를 사용하기 위해 해당 라이브러리가 포함된 JAR 파일이 필요하다는 것.


  • JAR (Java Archive)
    여러개의 자바 클래스 파일, 관련 메타 데이터를 압축한 파일이다. 이를 통해 자바 애플리케이션을 더 쉽게 배포하고 실행할 수가 있다!

    예를 들면,

  1. Hello World라는 간단한 자바 프로그램을 만들었다고 가정해보자. 프로그램은 HelloWorld.java 라는 소스파일로 시작할 것이고 → 이 파일을 컴파일하면 ‘HelloWorld.class’ 라는 바이트코드 파일이 생성이 된다.
    2. 그러면 프로그램이 복잡해지고, 다른 클래스들과 라이브러리들을 사용하게 되면 이 모든 파일들을 관리하고 배포하는 것이 매우 까다로워진다!
    3. 그래서 JAR 파일이 필요한 것이다.
    4. HelloWorld.jar 라는 JAR 파일을 만들면 → 이 파일 하나만으로 ‘Hello World’ 라는 프로그램을 실행하고 배포할 수가 있다.
    5. JAR 파일 안에는 → HelloWorld.class 와 해당 프로그램이 사용하는 모든 클래스 파일과 라이브러리들이 포함되어 있다. 프로그램 배포를 단순화하고 프로그램을 쉽게 실행할 수 있는 것이다.

    그럼.. 내가 방금 사용한 MySQL 파일에는 뭐가 들어있는지 알아봤다.

    대표적으로 com.mysql.cj.jdbc.Driver'com.mysql.cj.jdbc.Driver` 라는 클래스가 들어있고, MySQL 데이터 베이스에 연결을 수행하는 JDBC 드라이버 역할을 한다.

    하지만 이 클래스와 메소드까지 보는 건 추천하지 않는다고 한다. JAR 파일 내부 코드는 개발자가 직접 건드리지 않고, 제공되는 API를 통해 사용하는 것이 일반적이라고 한다.

    네..


  • 라이브러리
    특정한 기능을 수행하는 메소드와 클래스의 집합이다. 라이브러리를 사용하면 개발자는 기본적인 코드를 반복적으로 작성할 필요가 없고, 라이브러리가 제공하는 메소드와 클래스를 호출함으로써 원하는 기능을 쉽게 구현할 수가 있는 것이다.

  • JVM
    1. Java로 작성된 애플리케이션을 실행하기 위한 가상머신으로
    2. Java의 핵심 철학인 “한 번 작성하면, 어디에서나 실행”을 가능하게 하는 아주 중요한 요소다.
    3. JVM은 Java 바이트코드를 운영체제에 맞게 기계어로 변환해주는 → 그래서 Java로 작성된 애플리케이션은 JVM이 설치되어있는 모든 운영체제에서 실행될 수가 있는 것이다!
    4. JVM은 따라서 플랫폼에 독립적이라는 특징을 가지며, Java의 가장 큰 장점 중 하나이다.

    JVM은 이후 따로 더 깊게 공부하도록 하겠다.

profile
Strong men believe in cause and effect.

0개의 댓글