2017-06-12 26 views
2

DBプールからDB接続を取得しようとしています。次にソースコードを示し、実行時に "java.lang.NoClassDefFoundError:oracle/jdbc/OracleShardingKeyBuilder"を返します。しかし、私はucp.jarファイルをインポートしました。スレッド "main"の例外java.lang.NoClassDefFoundError:oracle/jdbc/OracleShardingKeyBuilder

問題を解決するのを手伝ってください。

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) 
+0

あなたはどのバージョンのjarをインポートしましたか? – Akshay

+0

oracleサイトからOracle Database 11gリリース2(11.2.0.4)UCP Downloadをダウンロードしました。 – dmaprasad

答えて

4

あなたは、ドライバのjarファイルが欠落しています。正しいバージョンのjarをダウンロードしてclasspathに置く必要があります。

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が必要です。オラクル社では、ucp.jarとJDBCドライバの両方を同じバージョンに保つことを推奨しています。

+0

ありがとうございます。これは私のために働きます – dmaprasad

+0

実際にはオラクルの推奨事項の代わりに、ドライバのjarとucpのjarの両方が同じバージョンになっている必要があります。 –

関連する問題