You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Ramunas Belkauskas (JIRA)" <ji...@apache.org> on 2016/01/14 09:49:39 UTC

[jira] [Comment Edited] (GROOVY-7105) Oracle Thin Driver Fails with an Exception in Groovy 2.3.x

    [ https://issues.apache.org/jira/browse/GROOVY-7105?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15097838#comment-15097838 ] 

Ramunas Belkauskas edited comment on GROOVY-7105 at 1/14/16 8:49 AM:
---------------------------------------------------------------------

Hi, I also think that this change in class loading semantics should be avoided.
Maybe it would be enough just to wrap the query for class methods (in *CachedSAMClass.getSAMMethod(Class<?> c)*) in simple try/catch and in the case of NoClassDefFoundError return just *null*.

Also GROOVY-6703 seems to be a duplicate.


was (Author: belkaram):
Hi, I also think that this change in class loading semantics should be avoided.
Maybe it would be enough just to wrap the query for class methods (in *CachedSAMClass.getSAMMethod(Class<?> c)*) in simple try/catch and in the case of NoClassDefFoundError return just *null*.
I created a pull request: https://github.com/apache/groovy/pull/239 .

Also GROOVY-6703 seems to be a duplicate.

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