java.lang.ClassNotFoundException : Eclipse의 com.mysql.jdbc.Driver


89

코드의 문제점은 디버깅 중에 많은 오류가 있습니다. mysql 데이터베이스에 연결할 싱글 톤 클래스에 대한 코드를 작성 중입니다.

내 코드는 다음과 같습니다.

package com.glomindz.mercuri.util;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;

public class MySingleTon {
    String url = "jdbc:mysql://localhost:3306/";
    String dbName = "test";
    String driver = "com.mysql.jdbc.Driver";
    String userName = "root";
    String password = "";

    private static MySingleTon myObj;   
    private Connection Con ;
    private MySingleTon() {
        System.out.println("Hello");
        Con= createConnection();
    }

    @SuppressWarnings("rawtypes")
    public Connection createConnection() {
        Connection connection = null;
        try {
            // Load the JDBC driver
            Class driver_class = Class.forName(driver);
            Driver driver = (Driver) driver_class.newInstance();
            DriverManager.registerDriver(driver);
            connection = DriverManager.getConnection(url + dbName);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        }
        return connection;
    }

    /**
     * Create a static method to get instance.
     */
    public static MySingleTon getInstance() {
        if (myObj == null) {
            myObj = new MySingleTon();
        }
        return myObj;
    }

    public static void main(String a[]) {
        MySingleTon st = MySingleTon.getInstance();
    }
}

나는 자바를 처음 사용합니다. 도와주세요.


2
클래스 경로에 드라이버 jar가 있습니까?
멍청이

당신이 당신의 getInstance ()에서 동기화했는지 확인
싯다 르트 나라 얀


1
런타임에 오류가 발생하는 경우 jar 파일을 웹 서버의 lib 디렉토리에 붙여 넣어야합니다. 반면, 컴파일 시간에 오류가 발생하면 빌드 경로에 jar를 추가하십시오.
djangodude

답변:


124

mysql 연결 라이브러리가 프로젝트에 포함 되어 있지 않은 것 같습니다 . 제안 된 솔루션 중 하나에 따라 문제를 해결하십시오.

  • 메이븐 프로젝트 솔루션

mysql-connector 종속성을 pom.xml 프로젝트 파일에 추가합니다.

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.39</version>
</dependency>

여기에 모든 버전이 있습니다 : https://mvnrepository.com/artifact/mysql/mysql-connector-java

  • 모든 프로젝트 솔루션

프로젝트에 jar 라이브러리를 수동으로 추가하십시오.

프로젝트-> 빌드 경로-> 빌드 경로 구성을 마우스 오른쪽 버튼으로 클릭하십시오.

에서 Libraries Tab 키를 누릅니다 Add External JarSelect당신의 항아리.

여기서 mysql-connector 용 zip을 찾을 수 있습니다.

  • 설명:

프로젝트를 빌드 할 때 mysql 연결 라이브러리의 파일 (com.mysql.jdbc.Driver 클래스)을 찾을 수 없기 때문에 java에서 예외가 발생합니다. 솔루션은 프로젝트에 라이브러리를 추가하고 Java는 com.mysql.jdbc.Driver를 찾습니다.


7
IDE를 사용하지 않고 단순히 터미널에서 실행한다면 어떨까요? 그렇다면이 문제를 어떻게 처리해야합니까?
Achyuta Aich 2015

2
@Asad가 제안한대로 폴더 에 mysql-connector-java-8.0.15.jar파일을 추가 할 때까지 문제가 해결되지 않습니다 apache-tomcat-9.0.16\lib.
SWETA KESUR

53

IDE에 오류 (컴파일 시간 오류)가 발생하면 mysql-connector jar 파일을 libs에 추가하고 참조 된 프로젝트 라이브러리에도 추가해야합니다.

실행 중일 때이 오류가 발생하면 웹 서버의 lib 폴더에 mysql-connector JAR 파일을 포함하지 않았기 때문일 수 있습니다.

추가 mysql-connector-java-5.1.25-bin.jar웹 서버의 lib 디렉토리에 또한 클래스 패스합니다. Tomcat lib 경로가 예제로 제공됩니다.Tomcat 6.0\lib


1
IDE를 사용하지 않고 단순히 터미널에서 실행한다면 어떨까요? 그렇다면이 문제를 어떻게 처리해야합니까?
Achyuta Aich 2015

당신이 어떤 IDE를 사용하지 않는 경우 당신은 당신의 클래스 패스에 jar 파일의 경로를 추가해야합니다
아사드

2
서버 lib 디렉토리에 추가하는 것은 나를 위해 일한 중요 여기서주의해야 할 점, 덕분에
Chandra_S


12

모든 사람이 답을 썼지 만 실제로 가장 간단한 방법으로 답한 사람이 없다는 사실에 여전히 놀랍습니다.
사람들은 jar 파일을 포함하는 대답입니다. 그러나 오류는 계속 발생합니다.

그 이유는 프로젝트가 실행될 때 jar가 배포되지 않기 때문입니다. 따라서 우리가해야 할 일은 IDE에이 jar도 배포하도록 지시하는 것입니다.

여기 사람들은 WEB-INF의 lib 폴더에 jar 파일을 넣을 정도로 여러 번 대답했습니다. 괜찮아 보이지만 왜 수동으로 수행합니까? 간단한 방법이 있습니다. 아래 단계를 확인하십시오.

1 단계 : 프로젝트에서 jar 파일을 참조하지 않은 경우 다음과 같이 참조하십시오.

프로젝트를 마우스 오른쪽 버튼으로 클릭하고 프로젝트 속성으로 이동합니다. 그런 다음 Java 빌드 경로로 이동 한 다음이를 통해 외부 jar 파일을 추가하십시오.

그러나 빌드 경로를 통해 외부 jar를 추가하면 클래스 컴파일에만 도움이되고 프로젝트를 실행할 때 jar가 배포되지 않기 때문에 여전히 문제가 해결되지 않습니다. 이를 위해이 단계를 따르십시오.

프로젝트를 마우스 오른쪽 버튼으로 클릭하고 프로젝트 속성으로 이동합니다. 그런 다음 Deployment Assembly 로 이동 한 다음 Add 를 누른 다음 Java 빌드 경로 항목으로 이동하여 jstl, mysql 또는 다른 jar 파일이든 라이브러리를 추가하십시오. 배포에 추가합니다. 아래는 그것을 표시하는 두 사진입니다.

추가하기 전에

추가 후


고마워 친구. 작동했습니다. 이 이클립스 사용하는 경우에만 동적 웹 애플리케이션을위한 솔루션이기 때문에 왜 다른 사람이 아마 언급하지 않았다
Sayka

@sayka 예, 그럴 수도 있습니다.
Tahir Hussain Mir

11

클래스 경로 에 MySQL MySQL Connector Jar 용 드라이버 jar를 포함해야합니다 .

Eclipse를 사용하는 경우 : Eclipse에서 종속 라이브러리를 추가하는 방법

명령 행을 사용하는 경우 java의 -cp 매개 변수를 사용하여 드라이버 jar의 경로를 포함하십시오.

java -cp C:\lib\* Main

IDE를 사용하지 않고 단순히 터미널에서 실행한다면 어떨까요? 그렇다면이 문제를 어떻게 처리해야합니까?
Achyuta Aich 2015

1
사용하여 -cp찾거나 메인 클래스의 오류를로드 할 수 없습니다 수 있습니다. Main 클래스를 다른 폴더에 넣어야합니까?
zygimantus


8

JDBC API는 대부분 데이터베이스와 독립적으로 작동하는 인터페이스로 구성됩니다. JDBC API를 구현하는 각 데이터베이스에는 데이터베이스 특정 드라이버가 필요합니다.

먼저 www.mysql.com에서 MySQL 커넥터 jar를 다운로드 한 다음 :

Right Click the project -- > build path -- > configure build path

라이브러리 탭에서 누르고 Add External Jar항아리를 선택하십시오.


3

Maven 기반 프로젝트의 경우 종속성이 필요합니다.

<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>
</dependency>

2
왜 PostgreSQL인가? 문제는 MySQL에 관한 것입니다.
naXa

대답은 질문에 맞게 편집
tomtomssi

2

프로젝트에서 라이브러리 라이브러리-> 마우스 오른쪽 버튼 클릭-> 라이브러리 추가-> Mysqlconnector 5.1


2

드라이버 커넥터가 빌드 경로에 없습니다. 빌드 경로를 구성하고 'mysql-connector-java-5.1.25-bin.jar'를 가리 킵니다 (사용중인 버전 확인). 또는 maven을 사용할 수 있습니다 : D


1

내 경우에는 netbeans 버전 maven 프로젝트 7.2.1이 달랐습니다. 프로젝트에 종속성이라는 폴더가 있습니다. 마우스 오른쪽 버튼을 클릭하면 패키지를 검색 할 수있는 팝업 창이 나타납니다. 쿼리 영역에 넣어

mysql-connector

일치하는 항목이 표시됩니다 (일부 저장소에 대해이 작업을 수행하는 것 같습니다). 두 번 클릭하고 설치하십시오.


1

오류가 발생한 하위 디렉터리의 위치에 WEB-INF 폴더가 없기 때문입니다. 응용 프로그램을 컴파일하여 public_html 아래의 WEB-INF 폴더를 사용하거나 위의 오류와 같이 하위 폴더에 WEB-INF 폴더를 복사합니다.


1

IntelliJ Idea의 경우 프로젝트 구조 (파일, 프로젝트 구조)로 이동하고 mysql 커넥터 .jar 파일을 글로벌 라이브러리에 추가합니다. 거기에서 마우스 오른쪽 버튼을 클릭하고 '모듈에 추가'를 선택하십시오. 적용 / 확인을 누르면 잘 될 것입니다.


0

클래스 경로가 정의되지 않았기 때문에 예외가 발생할 수도 있습니다.

몇 시간 동안 연구하고 말 그대로 수백 페이지를 살펴본 후 문제는 라이브러리의 클래스 경로가 정의되지 않았다는 것입니다.

Windows 시스템에서 다음과 같이 클래스 경로를 설정하십시오.

set classpath=path\to\your\jdbc\jar\file;.


0

tomcat을 사용하는 경우 프로젝트 디렉토리와 함께 데이터베이스 커넥터 jar 파일도 tomcat / lib에 복사해야합니다. 이것은 나를 위해 일했다


0

2020 년부터 사용해야합니다.

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.18</version>
    </dependency>

0

Eclipse IDE 에서 SQLite 데이터베이스를 사용하여 간단한 JavaFX11 응용 프로그램을 개발 중 입니다. 보고서를 생성하기 위해 Jasper jar를 추가했습니다. 갑자기 "THIS" 오류가 발생합니다.

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

(이 추가 전) 잘 실행되었습니다. 하지만 갑자기!

이 간단한 응용 프로그램에는 maven 또는 다른 관리자를 사용하지 않습니다. 수동으로 병을 추가하고 있습니다.

"사용자 라이브러리"를 만들고 외부 폴더에서 내 항아리를 추가했습니다.

문제 발생 영역 : 내 "사용자 라이브러리"가 시스템 라이브러리로 표시됩니다. 방금 표시를 제거했습니다. 이제는 시스템 라이브러리가 아닙니다. "지금 내 프로젝트가 잘 작동합니다".

자체 디버그 : 다른 시도 : 실행 구성 : 라이브러리를 제거하고 항아리를 하나씩 추가하고 확인하십시오. -여기에서 모든 jar를 하나씩 삭제해야하며 실행 구성에서 지금 모두 선택하고 eclipse에서 제거하지 않습니다. 따라서 오류 메시지는 항아리에서 다른 항아리로 변경됩니다.

이것이 누군가를 돕기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.