Details
-
Bug
-
Status: Closed
-
Blocker
-
Resolution: Fixed
-
2.3.0
-
None
Description
Trying to load the Oracle driver in Groovy fails with the following error:
java.lang.NoClassDefFoundError: oracle/xdb/XMLType
at java_sql_Connection$getMetaData.call(Unknown Source)
at db_test.printMetaData(db_test.groovy:9)
at db_test.printMetaData(db_test.groovy)
at db_test$printMetaData$0.callCurrent(Unknown Source)
at db_test.run(db_test.groovy:45)
Caused by: java.lang.ClassNotFoundException: oracle.xdb.XMLType
... 5 more
This works in Groovy 2.1.x. This is loading the thin driver which doesn't require extra libraries. It appears that Groovy loads Oracle's OCI driver which requires these additional jar files and fails.
import groovy.sql.Sql import java.sql.ResultSet import java.sql.DatabaseMetaData void printMetaData( Sql sql, catalog = null, schema = null ) { try { DatabaseMetaData metadata = sql.connection.getMetaData() ResultSet rs = metadata.getCatalogs() while( rs.next() ) { String catalogName = rs.getString("TABLE_CAT") println("${catalogName}") } rs.close() rs = metadata.getSchemas() while( rs.next() ) { String catalogName = rs.getString("TABLE_CAT") String schemaName = rs.getString("TABLE_SCHEM") println("${catalogName}.${schemaName}") } rs.close() def types = [ "TABLE" ] rs = metadata.getTables( catalog, schema, null, types.toArray( new String[types.size()]) ) while( rs.next() ) { String catalogName = rs.getString("TABLE_CAT") String schemaName = rs.getString("TABLE_SCHEM") String tableName = rs.getString("TABLE_NAME") println("${catalogName}.${schemaName}.${tableName}") } rs.close() } finally { sql.close() } } oracle = Sql.newInstance("jdbc:oracle:thin:@//localhost:1521/PDB1", "someUser", "somePassword", "oracle.jdbc.driver.OracleDriver") printMetaData( oracle )
Attachments
Issue Links
- is duplicated by
-
GROOVY-6703 Strange problems with EhCache from Groovy
- Closed