0

我的项目使用ojdbc6的是c3p0连接池。这我搬到了ojdbc8UCP(Oracle's universal connection pooling)。但我得到以下错误:

UCP Config用过的:

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

我知道当我们class从相同加载2 个时会出现错误package。但是我签入了外部依赖项intellij并尝试mvn dependency:treemaven. 我OJDBC jarsclasspath.

还有其他原因吗?

4

1 回答 1

0

这通常发生在您 .ojdbc*.jarclasspath

在您的问题中,您明确表示您已验证没有重复但必须有一个。如果您从那里加载ojdbc8Maven则需要确保它不是从本地手动添加的filesystem

同样的事情ucp.jar。您可能想要扫描您filesystemojdbc6.jar or ojdbc6dms.jar (or ojdbc8.jar and ojdbc8dms.jar or ojdbc10 - just scan for ojdbc*)罐子并将其重命名为其他名称(或删除它们)。

有时很难看到完整的类路径(取决于您的框架)。Onlinux a "ps -af" command将显示用于启动 java 的完整命令行,这些有时会提供有关classpath.

于 2020-01-24T08:52:58.297 回答