it-source

드라이버 클래스 com.mysql.jdbc를 로드하지 못했습니다.드라이버

criticalcode 2023. 2. 25. 21:21
반응형

드라이버 클래스 com.mysql.jdbc를 로드하지 못했습니다.드라이버

2개의 프로파일로 Spring Boot 백엔드를 실행하려고 합니다.하나는 메모리 데이터베이스에서 H2를 사용하고 다른 하나는 MySQL을 사용합니다.H2 데이터베이스는 정상적으로 동작하지만 MySQL로 전환하면 정상적으로 동작합니다.

APPLICATION FAILED TO START
***************************

Description:

Failed to bind properties under '' to com.zaxxer.hikari.HikariDataSource:

    Property: driverclassname
    Value: com.mysql.jdbc.Driver;
    Origin: "driverClassName" from property source "source"
    Reason: Failed to load driver class com.mysql.jdbc.Driver; in either of HikariConfig class loader or Thread context classloader

Action:

Update your application's configuration

.m2, 재 Import, maven clean, compile, install 등 인터넷에서 찾을 수 있는 대부분의 것을 삭제해 봤지만 성공하지 못했습니다.재미있는 것은 MySQL 데이터베이스만의 다른 프로젝트가 있어서 비슷한 문제가 있었지만 mysql-connector-java 의존관계를 추가해서 해결했습니다.지금은 전혀 모르겠어요.

application.properties

spring.profiles.active=@profilename@

#H2 in memory database
domain.datasource.type=H2
domain.datasource.url=jdbc:h2:mem:store;MODE=MYSQL;
domain.datasource.driver-class=org.h2.Driver
domain.datasource.username=sa
domain.datasource.password=
domain.datasource.generate-dll=true

application-local_properties.properties

spring.profiles.active=@profilename@

#MySQL local database
domain.datasource.type=MYSQL
domain.datasource.url=jdbc:mysql://localhost:3600/store;
domain.datasource.driver-class=com.mysql.jdbc.Driver;
domain.datasource.username=store
domain.datasource.password=store
domain.datasource.generate-dll=false

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>sk.personal</groupId>
    <artifactId>my-project</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>my-project</name>
    <description>My personal project.</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>2.0.5.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

    </dependencies>

    <profiles>
        <profile>
            <id>local_h2</id>
            <properties>
                <profilename>local_h2</profilename>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>local_mysql</id>
            <properties>
                <profilename>local_mysql</profilename>
                <maven.test.skip>true</maven.test.skip>
            </properties>
        </profile>
    </profiles>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

DatasourceConfig.java

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType;

import javax.sql.DataSource;

@Configuration
public class DatasourceConfig {

    @Value("${domain.datasource.url}")
    private String url;

    @Value("${domain.datasource.username}")
    private String username;

    @Value("${domain.datasource.password}")
    private String password;

    @Value("${domain.datasource.type}")
    private String type;

    @Value("${domain.datasource.driver-class}")
    private String driverClass;

    @Bean
    public DataSource dataSource() {
        if (type.equals("MYSQL")) {
            return DataSourceBuilder
                    .create()
                    .username(username)
                    .password(password)
                    .url(url)
                    .driverClassName(driverClass)
                    .build();
        } else {
            EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
            return builder
                    .setType(EmbeddedDatabaseType.H2)
                    .build();
        }
    }
}

내 경우 다음 종속성이 누락되었습니다.

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

및 IntelliJ에서 <parent> 해서 볼 수 pom.xmlpom.xml그 다음에, 다음과 같이 합니다.

.mysql-connector-java공물입입니니다

정답이 너무 민망하네요.application.properties 드라이버 행에 세미콜론을 붙였습니다.분명히, 그 운전자를 알아보지 못했군요.

Spring Boot 2.2.0 사용 중 문제가 발생하였습니다.릴리스되어 오래된 Mysql DB(5.1.73)에 접속해야 했습니다.이것에 의해, mysql-connector-java 버전 5.1.38로 다운그레이드 할 필요가 있었습니다.

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

스프링 부트에서는 새로운 mysql-java-connector가 기대되어 com.mysql.cj.jdbc로 이름이 변경되었습니다.드라이버, spring datasource driver-class-name 설정도 spring boot db 구성에 추가해야 했습니다.

스프링 부트 설정은 다음과 같습니다.

spring:
  datasource:
   url: 'localhost'
   password: password
   username: user
   driver-class-name: com.mysql.jdbc.Driver

다음과 같이 mysql 및 jdbc 종속성을 추가합니다.

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jdbc</artifactId>
    </dependency>

MYSQL JDBC 드라이버의 버전을 지정하지 않았기 때문에 버전 8.x 를 취득할 가능성이 있습니다.이 버전에서는 드라이버의 이름이 이전 버전과 다릅니다.

com.mysql.cj.jdbc.Driver

내 경우 오류 발생:

Property: driverclassname
Value: com.mysql.cj.jdbc.Driver
Origin: "driverClassName" from property source "source"

이유: 드라이버 클래스 com.mysql.cj.jdbc를 로드하지 못했습니다.HikariConfig 클래스 로더 또는 스레드 컨텍스트클래스로더 중 하나의 드라이버

mysql 의존관계를 추가했습니다.

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

드라이버를 업그레이드해 보세요.Coz Mysql 커뮤니티가 com.mysql.jdbc에서 클래스 이름을 업데이트했습니다.드라이버는 com.mysql.cj.jdbc.상세 내용 확인

데이터베이스 드라이버 종속성 범위를 '런타임'으로 변경합니다.

예를 들어 다음과 같습니다.

   <dependency>
        <groupId>com.{yourDatabaseGroupid}</groupId>
        <artifactId>{yourDatabaseArtifactId}</artifactId>
        <scope>runtime</scope>
    </dependency>

다음을 추가해야 합니다.spring.datasource.driver-class-name=com.mysql.jdbc.Driverapplication.properties 파일로 이동합니다.

내 **application.properties : **

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.datasource.url=jdbc:mysql://localhost:3306/db_name?useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&zeroDateTimeBehavior=convertToNull
spring.datasource.username=root

믿을 수가 없어!인텔리주:빌드->리빌드 프로젝트가 문제를 해결했습니다!

여기에 이미지 설명 입력

상세한 것에 대하여는, 다음을 참조해 주세요.

pom.xml: 여기에 이미지 설명 입력

application.properties: 여기에 이미지 설명 입력

이 문제도 mysql 버전 때문에 발생했습니다.pom.xml 의존관계에 mysql 버전만 추가하면 됩니다(내 경우 버전은 8.0.25입니다).

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

실행 전에 반드시 maven dependency를 다시 로드하십시오.

나도 너와 같은 문제가 있었어.저는 h2 데이터베이스 의존성 때문이었어요!이 두 가지가 어떻게 서로 영향을 미칠 수 있을지는 모르겠지만, 내가 한 일은 이 의존성을 없앤 것뿐이고, 이제 잘 작동한다!

모든 설정이 올바르지만, 이 에러는 아직 표시됩니다.

Intelij에서 창의 프로젝트 구조(ctrl + alt + maj + S)로 이동합니다.문제가 생겼는지 봐

이 경우 사이드바의 "Generate source and Update Folders for All projett"에서 clic으로 이동합니다.

이것으로 나의 실수는 해결되었다!

프로젝트 내 jar 경로 지정 필요 -> 속성 -> JPA -> 연결 프로파일 -> JAR 목록

설정 스크린샷

같은 문제가 발생했는데 근본 원인은 [spring.profile.active]이고 수정은 [spring.profiles.active]로 프로파일 복수입니다.그것은 저의 실수입니다.

https://start.spring.io 에 접속해 주세요.[ Dependencies ]> [ Search for Mysql drver ]> [ select it ]> [ explow ]버튼을 클릭합니다.> mysql 커넥터의 최신 버전을 복사하여 application . properties 파일에 추가합니다.

언급URL : https://stackoverflow.com/questions/52804228/failed-to-load-driver-class-com-mysql-jdbc-driver

반응형