将 Oracle aqapi 升级到 aqapi-jakarta 后,项目未使用 Java 17 进行编译

问题描述 投票:0回答:1

从 Spring 5 升级到 Spring 6 (Spring Boot v2 — v3) 带来了 Jakarta EE 9+。这使得

com.oracle.database.messaging:aqapi
不兼容,因为
ConnectionFactory
类从
javax
包移至
jakarta
包。

这个问题可以通过将

com.oracle.database.messaging:aqapi
替换为
com.oracle.database.messaging:aqapi-jakarta
依赖项来解决。

但是在这次替换之后,项目编译时不会出现错误:

createShardingKeyBuilder() in cannot implement createShardingKeyBuilder() in javax.sql.CommonDataSource return type oracle.jdbc.OracleShardingKeyBuilder is not compatible with java.sql.ShardingKeyBuilder
,或者可能是
createShardingKeyBuilder in oracle.ucp.jdbc.PoolDataSource clashes with createShardingKeyBuilder  in javax.sql.CommonDataSource

java ojdbc advanced-queuing
1个回答
0
投票

问题在于

com.oracle.database.jdbc:ojdbc
依赖。

com.oracle.database.messaging:aqapi-jakarta
依赖于
com.oracle.database.jdbc:ojdbc8
,但要使 Oracle JDBC 在 Java17 下工作,需要
com.oracle.database.jdbc:ojdbc11

因此

pom.xml
应该具有通过以下方式指定的依赖关系:

    <dependency>
      <groupId>com.oracle.database.messaging</groupId>
      <artifactId>aqapi-jakarta</artifactId>
      <version>23.2.1.0</version>
      <exclusions>
        <exclusion>
          <groupId>com.oracle.database.jdbc</groupId>
          <artifactId>ojdbc8</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>com.oracle.database.jdbc</groupId>
      <artifactId>ojdbc11</artifactId>
      <version>23.2.0.0</version>
    </dependency>
© www.soinside.com 2019 - 2024. All rights reserved.