我之前问过这个问题,但实际上并没有得到任何结果。我停了一会儿,然后回来尝试让它发挥作用。我正在我们的存储库上从 Java 8 升级到 Java 11,当尝试运行 mvn install 时,出现此错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project <project>: Compilation failure
[ERROR] <project>.java:[15,8] createConnectionBuilder() in oracle.jdbc.datasource.impl.OracleDataSource cannot implement createConnectionBuilder() in javax.sql.DataSource
[ERROR] return type oracle.jdbc.datasource.impl.OracleConnectionBuilderImpl is not compatible with java.sql.ConnectionBuilder
我已经搜索了所有关于这可能是什么的信息,我得到的唯一真实的信息是 ojdbc8 可能是错误的版本。我将 pom.xml 更新为最新版本的 OJDBC8 (19.3.0.0 -> 23.3.0.23.09):
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>23.3.0.23.09</version>
</dependency>
这是错误引用的类,我看不到任何可能存在问题的地方,因为 Java 8 上没有问题,而且代码本身似乎很好:
import oracle.jdbc.pool.OracleDataSource;
import org.springframework.security.crypto.encrypt.Encryptors;
import java.sql.SQLException;
import java.sql.SQLFeatureNotSupportedException;
import java.util.logging.Logger;
public class MtDataSource extends OracleDataSource {
public MtDataSource() throws SQLException {
super();
}
}
我没有找到 oracleDataSource 与 CreateConnectionBuilder 之间的任何链接,这些链接会从 javax.sql.DataSource 或 java.sql.ConnectionBuilder 绑定回此类。
寻求任何建议,因为我完全不知道导致编译问题的原因。谢谢!
我尝试过在pom.xml中尝试不同版本的OJDBC8,尝试过不同版本的maven-compiler-plugin,尝试过安装前清理。
请使用 ojdbc11.jar 而不是 ojdbc8,那么它就可以正常工作,只需在 pom.xml 中将工件 id 从 ojdbc8 更新为 ojdbc11 即可。