gpt4 book ai didi

java - 密封违规 : package oracle. jdbc.pool 被密封 oracle UCP 连接池

转载 作者:行者123 更新时间:2023-12-01 18:44:51 26 4
gpt4 key购买 nike

我的项目使用 ojdbc6c3p0 连接池。我将其移至 ojdbc8UCP(Oracle 的通用连接池)。但我收到以下错误:

使用的

UCP 配置:

try
{
//Creating a pool-enabled data source
pds= PoolDataSourceFactory.getPoolDataSource();

String dbURL="jdbc:oracle:thin:@(DESCRIPTION = (CONNECT_TIMEOUT= 15)(RETRY_COUNT=20)(RETRY_DELAY=3) (ADDRESS_LIST =(LOAD_BALANCE=on)(ADDRESS = (PROTOCOL = TCP) (HOST = vm-host-101) (PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = S1NAME)))";

//this is where am using that package
pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");
pds.setURL(dbURL);
pds.setUser("username");
pds.setPassword("password");
pds.setInitialPoolSize(5);
pds.setMinPoolSize(5);
pds.setMaxPoolSize(10);
pds.setFastConnectionFailoverEnabled(false);
return pds;
}
catch(SQLException e)
{
e.printStackTrace();
}
return pds;

}

错误:

Caused by: java.sql.SQLException: Unable to create factory class instance with provided factory class name: java.lang.SecurityException: sealing violation: package oracle.jdbc.pool is sealed
at oracle.ucp.util.UCPErrorHandler.newSQLException(UCPErrorHandler.java:456) ~[ucp-12.2.0.1.jar:12.2.0.1.0]
at oracle.ucp.util.UCPErrorHandler.throwSQLException(UCPErrorHandler.java:133) ~[ucp-12.2.0.1.jar:12.2.0.1.0]
at oracle.ucp.jdbc.PoolDataSourceImpl.initConnectionFactory(PoolDataSourceImpl.java:3243) ~[ucp-12.2.0.1.jar:12.2.0.1.0]
at oracle.ucp.jdbc.PoolDataSourceImpl.createUniversalConnectionPool(PoolDataSourceImpl.java:1105) ~[ucp-12.2.0.1.jar:12.2.0.1.0]
... 61 common frames omitted
Caused by: java.lang.SecurityException: sealing violation: package oracle.jdbc.pool is sealed

我知道当我们从同一个package加载2个class时就会出现错误。但我在 intellij 中检查了外部依赖项,并尝试了 mavenmvn dependency:tree 命令。我在 classpath 中找不到重复的 OJDBC jar

还有其他原因吗?

最佳答案

当您的类路径中有多个ojdbc*.jar时,通常会发生这种情况。

在您的问题中,您明确表示您已验证不存在重复,但肯定有一个。如果您从 Maven 加载 ojdbc8,那么您需要确保它不是从本地文件系统 手动添加的。

ucp.jar 也是如此。您可能需要扫描文件系统中的ojdbc6.jar或ojdbc6dms.jar(或ojdbc8.jar和ojdbc8dms.jar或ojdbc10 - 只需扫描ojdbc*)并重命名jar 到其他东西(或删除它们)。

有时查看完整的类路径是很神秘的 - 取决于您的框架。在linux上,“ps -af”命令将显示用于启动java的完整命令行,这些有时会提供有关类路径的有用信息。

关于java - 密封违规 : package oracle. jdbc.pool 被密封 oracle UCP 连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59858148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com