我的项目在启动时失败,出现了给定的错误:
Failed to instantiate [io.r2dbc.spi.ConnectionFactory]: Factory method 'connectionFactory' threw exception; nested exception is java.lang.NoSuchFieldError: LOCK_WAIT_TIMEOUT
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-r2dbc</artifactId>
<version>1.4.3</version>
</dependency>
<dependency>
<groupId>com.oracle.database.r2dbc</groupId>
<artifactId>oracle-r2dbc</artifactId>
<version>0.4.0</version>
</dependency>我该怎么解决呢?
发布于 2022-04-01 17:23:14
tl;dr:在撰写本文时,在Spring项目中使用oracle-r2dbc 0.1.0。
oracle-r2dbc 0.4.0依赖于io.r2dbc:r2dbc-spi的更新版本,而不是spring-data-r2dbc 1.4.3。
要使更改生效,您可能必须清除生成工具或IDE的缓存。(在我的例子中,mvn clean和IntelliJ“使缓存失效.”)
顺便说一句,当我降级时,我认为它破坏了rdbc中的描述符,所以我不得不切换到这样的URL:r2dbc:oracle://<host>:<port>/<service-name>
更新,刚刚在甲骨文的驱动程序文档上看到了r2dbc,它说:
如果使用
编程,则使用R2DBC的0.1.0版本。Oracle的后期版本实现了0.9.x版本的R2DBC SPI。目前,Spring只支持实现SPI 0.8.x版本的驱动程序。
https://github.com/oracle/oracle-r2dbc
不要在Spring中使用0.2.0 --比没有错误更糟糕的是,查询永远挂起。我花了一天的时间来调试它。不仅我有错误的版本,而且当我真的尝试更改版本时,我的IDE将旧版本与Maven不同步地缓存起来。
https://stackoverflow.com/questions/71710673
复制相似问题