"main"线程中的异常:java.lang.NoClassDefFoundError: oracle/jdbc/OracleShardingKeyBuilder

4
我正在尝试从数据库池中获取DB连接。以下是我的源代码,但在运行时返回“java.lang.NoClassDefFoundError: oracle/jdbc/OracleShardingKeyBuilder”。我已经导入了ucp.jar文件。
请帮助我解决这个问题。
private static PoolDataSource pds = null;
private static Connection conn = null;

public static synchronized Connection getConnectionFromPool() throws Exception {
    String print;
    String nl = "\r\n";
    try {
        pds = PoolDataSourceFactory.getPoolDataSource();
        System.out.println(CommonInfo.url);
        System.out.println(CommonInfo.uName);
        pds.setURL(CommonInfo.url);
        pds.setUser(CommonInfo.uName);
        pds.setPassword(CommonInfo.uPassword);
        pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");

        //Setting pool properties
        pds.setInitialPoolSize(5);
        pds.setMinPoolSize(5);
        pds.setMaxPoolSize(20);

        int usedConnctionCount = pds.getBorrowedConnectionsCount();
        int AvailableConnctionCount = pds.getAvailableConnectionsCount();

        int totalCount = usedConnctionCount + AvailableConnctionCount;


        if (AvailableConnctionCount != 0) {

            conn = pds.getConnection();
            conn.setAutoCommit(true);

            usedConnctionCount = pds.getBorrowedConnectionsCount();
            AvailableConnctionCount = pds.getAvailableConnectionsCount();

            totalCount = usedConnctionCount + AvailableConnctionCount;


            return conn;
        } else {
            print = "All connections in the database pool are now busy...";
            System.out.println(print);
            throw new Exception("All connections in the database pool are now busy.");
        }
    } catch (Exception e) {
        e.printStackTrace();
        throw e;
    }
}

异常:

Exception in thread "main" java.lang.NoClassDefFoundError: oracle/jdbc/OracleShardingKeyBuilder
at oracle.ucp.jdbc.PoolDataSourceFactory.getPoolDataSource(PoolDataSourceFactory.java:48)

你导入了哪个版本的jar包? - Akshay
我已经从Oracle网站下载了Oracle Database 11g Release 2 (11.2.0.4) UCP下载文件。 - dmaprasad
1个回答

7
您缺少驱动程序的 jar 文件。您需要下载正确版本的 jar 并将其放置在 classpath 中。以下是来自 Oracle 支持文档的内容:
在 12c 之前(即 12.1.0.1.0),UCP 可以与任何版本的 Oracle JDBC 驱动程序一起使用。对于新的池 UCP 12.1.0.2,它依赖于 Oracle JDBC 驱动程序 12.1.0.2。例如:12.2.0.1 ucp.jar 需要来自 12.2.0.1 的 ojdbc8.jar。Oracle 的建议是保持 ucp.jar 和 JDBC 驱动程序版本相同。

实际上,与其说是Oracle的建议,不如说这应该是一个要求,即驱动程序的jar包和ucp的jar包必须是同一版本。 - Jean de Lavarene

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接