线程" main"中的例外情况java.lang.NoClassDefFoundError:oracle / jdbc / OracleShardingKeyBuilder

时间:2017-06-12 05:16:24

标签: java oracle jdbc

我试图从数据库池获取数据库连接。以下是我的源代码,它返回" 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)

1 个答案:

答案 0 :(得分:4)

您缺少驱动程序jar文件。您需要下载正确版本的jar并将其放在classpath中。这是来自oracle docs的支持:

在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驱动程序保持在同一版本中。