找不到类异常org//h2//驱动程序

c8ib6hqw  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(354)

我正在学习spring框架并尝试从.properties文件中注入属性。
这是我的.properties文件

sprint.datasource.username=hamnghi
sprint.datasource.password=hamnghi
sprint.datasource.url=jdbc:h2:~/test;
sprint.datasource.driver=org.h2.Driver;

当我试图通过 driver 将字段放入 Class.forName(drive) ,程序无法连接到数据库并引发错误 java.lang.ClassNotFoundException: org/h2/Driver; 但它印出了 driver 变量“org.h2.driver”到控制台就可以了。我的控制台屏幕截图
我还和你一起运行了这个程序 Class.forName("org.h2.Driver") ,运行良好;但是,当我用 driver ,没用
这是我的课。

package H2Database.db_connection;

import H2Database.functionality.Logging;
import org.springframework.beans.factory.annotation.Value;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Logger;

public class H2Connection {
    private final static Logger logger = Logging.getLogger();

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

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

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

    @Value("${sprint.datasource.driver}")
    private  String driver;

    public Connection open(){
        try {
            Class.forName(driver);
            Connection connection = DriverManager.getConnection(url, username, password);
            return connection;
        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
            return null;
        }
    }

    @Override
    public String toString() {
        return "H2Connection{" +
                "url='" + url + '\'' +
                ", username='" + username + '\'' +
                ", driver='" + driver + '\'' +
                '}';
    }
}
wlp8pajw

wlp8pajw1#

你有尾随吗 ; 在你的配置中。把它拿走
异常意味着在类路径中找不到特定的类。
您需要添加包含h2的相应实现的依赖项:

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

vngu2lb82#

您应该完成以下步骤,将h2数据库配置到springmvc应用程序。
步骤1:在pom.xml文件中添加以下依赖项

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

步骤2:在application.properties文件中配置这些属性。

spring.datasource.url=jdbc:h2:mem:testdb  
spring.datasource.driverClassName=org.h2.Driver  
spring.datasource.username=sa  
spring.datasource.password=  
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

注意:springmvc不会自动配置application.properties的属性。您应该使用配置类来配置它。
第3步:配置数据库。

@Configuration
@PropertySource("classpath:application.properties")
public class DataSourceConfig {

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

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

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

    @Value("${sprint.datasource.driver}")
    private  String driver;

    @Bean
    public DataSource testDataSource() {
        BasicDataSource bds = new BasicDataSource();
        bds.setDriverClassName(driver);
        bds.setUrl(url);
        bds.setUsername(username);
        bds.setPassword(password);
        return bds;
    }
}

相关问题