[ https://issues.apache.org/jira/browse/GROOVY-7105?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15098595#comment-15098595 ]
Pascal Schumacher commented on GROOVY-7105: ------------------------------------------- I guess this issue is an unintended side-effect of [implicit closure coercion|http://docs.groovy-lang.org/latest/html/documentation/core-semantics.html#closure-coercion] introduced with [Groovy 2.2|http://groovy-lang.org/releasenotes/groovy-2.2.html]. > Oracle Thin Driver Fails with an Exception in Groovy 2.3.x > ---------------------------------------------------------- > > Key: GROOVY-7105 > URL: https://issues.apache.org/jira/browse/GROOVY-7105 > Project: Groovy > Issue Type: Bug > Components: groovy-jdk, SQL processing > Affects Versions: 2.3.0 > Reporter: Charlie Hubbard > Priority: Blocker > > 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. > {code} > 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 ) > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)