首页 > 解决方案 > spring boot + oracle 驱动 + 没有合适的驱动

问题描述

我的应用程序使用许多数据源(postgreSQL、Sybase) 我尝试添加一个 Oracle 数据源

应用程序属性

rocbis.datasource.prd.driver.class-name=oracle.jdbc.driver.OracleDriver
rocbis.datasource.prd.jdbc-url=jdbc:oracle:thin:@<host>:1521:<dbname>
rocbis.datasource.prd.username=<username>
rocbis.datasource.prd.password=<password>

主机、数据库名称、用户名和密码已被混淆...

配置类

@Bean(name = "rocbisDatasourcePRD")
@ConfigurationProperties(prefix = "rocbis.datasource.prd")
public DataSource rocbisDataSourcePRD() {
    return DataSourceBuilder.create().build();
}

@Bean(name = "rocbisJDBCTemplatePRD")
public JdbcTemplate rocbisJdbcTemplatePRD(@Qualifier("rocbisDatasourcePRD") DataSource ds) {
    return new JdbcTemplate(ds);
}

和 POM.xml

<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>19.6.0.0</version>
</dependency>
<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ucp</artifactId>
    <version>19.6.0.0</version>
</dependency>

当 Springboot 启动时,出现以下错误:

Caused by: java.lang.RuntimeException: Failed to get driver instance
for jdbcUrl=jdbc:oracle:thin:@<host>:1521:<dbname> at com.zaxxer.hikari.util.DriverDataSource.<init>DriverDataSource.java:112)
at com.zaxxer.hikari.pool.PoolBase.initializeDataSource(PoolBase.java:336)
at com.zaxxer.hikari.pool.PoolBase.<init>(PoolBase.java:109)    
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:108)    
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
at config.DatasourceConfiguration.rocbisJdbcTemplatePRD(DatasourceConfiguration.java:446)
at config.DatasourceConfiguration$$EnhancerBySpringCGLIB$$1cdc8e91.CGLIB$rocbisJdbcTemplatePRD$59(<generated>)
at config.DatasourceConfiguration$$EnhancerBySpringCGLIB$$1cdc8e91$$FastClassBySpringCGLIB$$9002c681.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363)
at config.DatasourceConfiguration$$EnhancerBySpringCGLIB$$1cdc8e91.rocbisJdbcTemplatePRD(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)  
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)  
at java.lang.reflect.Method.invoke(Unknown Source)  
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
        ... 64 common frames omitted 
Caused by: java.sql.SQLException: No suitable driver    
at java.sql.DriverManager.getDriver(Unknown Source)
at com.zaxxer.hikari.util.DriverDataSource.<init>(DriverDataSource.java:104)
            ... 79 common frames omitted
             - org.springframework.boot.SpringApplication

我试过了 :

驱动程序类名而不是驱动程序类名

oracle.jdbc.driver.OracleDriver 而不是 oracle.jdbc.OracleDriver

任何想法 ?谢谢

标签: oraclespring-bootjdbcdriver

解决方案


使用oracle.jdbc.OracleDriver代替oracle.jdbc.driver.OracleDriver


以下配置适用于 Oracle

pom.xml

<dependency>
    <groupId>com.oracle.ojdbc</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>19.3.0.0</version>
</dependency>

引导程序属性

spring.datasource.url=jdbc:oracle:thin:@<host>:<port>:<service>
spring.datasource.username=<username>
spring.datasource.password=<password>
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver

推荐阅读