当前位置: 首页 > 知识库问答 >
问题:

获取R2dbcNon瞬态资源异常:不支持的Oracle JDBC驱动程序版本:19

韩瀚
2023-03-14

我正在尝试为我的Spring Boot应用程序设置R2DBC,该应用程序以Oracle 19c作为数据库,并配置了OJDBC8和Java11。R2DBC版本为0.1.0。由于应用程序无法启动,我收到以下错误。rRDBC是否适用于Oracle 19c还是需要Oracle 21x?

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myr2dbccon': Unexpected exception during bean creation; nested exception is io.r2dbc.spi.R2dbcNonTransientResourceException: Unsupported Oracle JDBC Driver version: 19
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:537) ~[spring-beans-5.3.9.jar!/:5.3.9]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.9.jar!/:5.3.9]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.9.jar!/:5.3.9]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.9.jar!/:5.3.9]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.9.jar!/:5.3.9]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:944) ~[spring-beans-5.3.9.jar!/:5.3.9]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.9.jar!/:5.3.9]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.9.jar!/:5.3.9]
    at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:64) ~[spring-boot-2.5.2.jar!/:2.5.2]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-2.5.2.jar!/:2.5.2]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) ~[spring-boot-2.5.2.jar!/:2.5.2]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:338) ~[spring-boot-2.5.2.jar!/:2.5.2]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
    
Caused by: io.r2dbc.spi.R2dbcNonTransientResourceException: Unsupported Oracle JDBC Driver version: 19
    at oracle.r2dbc.impl.ReactiveJdbcAdapter.getOracleAdapter(ReactiveJdbcAdapter.java:92) ~[oracle-r2dbc-0.1.0.jar!/:0.1.0]
    at oracle.r2dbc.impl.OracleConnectionFactoryImpl.<init>(OracleConnectionFactoryImpl.java:120) ~[oracle-r2dbc-0.1.0.jar!/:0.1.0]
    at oracle.r2dbc.impl.OracleConnectionFactoryProviderImpl.create(OracleConnectionFactoryProviderImpl.java:93) ~[oracle-r2dbc-0.1.0.jar!/:0.1.0]
    at io.r2dbc.spi.ConnectionFactories.find(ConnectionFactories.java:112) ~[r2dbc-spi-0.8.5.RELEASE.jar!/:?]
    at io.r2dbc.spi.ConnectionFactories.get(ConnectionFactories.java:142) ~[r2dbc-spi-0.8.5.RELEASE.jar!/:?]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.obtainFromSupplier(AbstractAutowireCapableBeanFactory.java:1231) ~[spring-beans-5.3.9.jar!/:5.3.9]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1173) ~[spring-beans-5.3.9.jar!/:5.3.9]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:564) ~[spring-beans-5.3.9.jar!/:5.3.9]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:524) ~[spring-beans-5.3.9.jar!/:5.3.9]

共有1个答案

阚乐湛
2023-03-14

错误与Oracle JDBC驱动程序版本有关,而与Oracle版本无关。Oracle R2DBC驱动程序依赖于Oracle JDBC驱动程序中的特定功能,这些功能仅在较新的驱动程序版本中可用,然后仅在驱动程序的Java 11(或更高版本)中可用(即ojdbc11,而不是ojdbc8)。

根据https://github.com/oracle/oracle-r2dbc,最新的Oracle R2DBC驱动程序需要Oracle JDBC 21.3驱动程序。

它还说:

Oracle R2DBC驱动程序已通过Oracle数据库版本18、19和21进行了验证。

需要明确的是,Oracle JDBC 21.3驱动程序可以很好地与Oracle 19c配合使用,R2DBC也是如此。

简而言之,您需要将Oracle JDBC驱动程序更新为:

xml prettyprint-override"><dependency>
  <groupId>com.oracle.database.jdbc</groupId>
  <artifactId>ojdbc11</artifactId>
  <version>21.3.0.0</version>
</dependency>
 类似资料:
  • 当我想要在neo4j服务器上持久化数据时出现此错误。你觉得问题可能出在哪? 我的pom.xml如下所示 我的controller类如下所示: 我的公司节点如下 我的人节点如下 我可以成功启动spring boot应用程序和tomcat servlet服务于端口8080。 但当我在Postman上执行此操作时,我收到标题上的错误:org.neo4j.driver.exceptions.cliente

  • 我试图在Neo4j JDBC驱动程序中使用Pentaho Kettle 5.0.1a-Stable,但当我试图预览“表输入”步骤的数据时,我得到了以下错误: 在我的。zshrc文件中有这些行 Java版本是1.7.0_60(我使用的是Mac OS X btw) 我克隆了Neo4j-driver并使用Maven构建了它(该驱动程序的最后一次提交是5430d0454180a,它添加了对neo4j2.1

  • 本文向大家介绍Android中获取资源 id 及资源 id 的动态获取,包括了Android中获取资源 id 及资源 id 的动态获取的使用技巧和注意事项,需要的朋友参考一下  Android中获取资源 id 及资源 id 的动态获取 我们平时获取资源是通过 findViewById 方法进行的,比如我们常在onCreate方法中使用这样的语句: findViewById是我们获取layout中各

  • 问题内容: 我已经将我的应用程序升级到了我正在使用的应用程序。当我使用时,连接到数据库进行身份验证时出现以下错误。 如何摆脱这一点。 问题答案: 是的,根据Microsoft SQL Server JDBC类型4.0驱动程序系统要求页面: JDBC驱动程序支持到SQL Azure数据库和SQL Server 2005及更高版本的连接。 听起来您正在运行SQL Server 2000。 更改驱动程序

  • 我正在创建页面对象模型和数据驱动程序框架。我正在为登录编写测试用例,但得到了pagefactory nullpointerexception。1.如何初始化我的驱动程序以避免此错误?2.再次说明如何在我的测试脚本中使用Screenshot page类,我在下面给出了代码。 失败:日志(“s@gmail.com“,”sw45“)java.lang.NullPointerException位于org.

  • 我使用xampp 32位PHP7.1。1. 我在我的Windows上安装了mongodb 3.4.2(Windows 8 Pro 64位) 我还安装了驱动程序(php_mongodb.dll) 我从这里得到:https://pecl.php.net/package/mongodb/1.2.5/windows (7.1线程安全(TS)x86) 但是,当我的系统执行时,仍然存在错误: 哎呀,好像出了什