How can I solve Modularity related issue ?

Ichiroh Takiguchi takiguc at linux.vnet.ibm.com
Fri Sep 28 07:28:06 UTC 2018


Hello.

One of JDBC application with JavaDB did not work on JDK12.
Following exception happened:
  java.sql.SQLException: No suitable driver found for jdbc:derby:xxxxxx

I assume, this issue related Modularity feature...
I could not solve this issue by myself.

In order to investigate the root cause, I would appreciate telling me 
how to identify the problem and debug it.

Thanks,
Ichiroh Takiguchi
IBM Japan, Ltd.

===========================
The detail instruction is as follows:
It has two types of SELECT statement call.
1. Use DriverManager
2. Use createJdbcRowSet()

"1" worked fine, "2" did not work on JDK11.
Same one worked fine on JDK8.

System / OS: RHEL 7.5 x86_64

Steps to Reproduce
1. Store JavaDB (derby.jar) in derby/lib/derby.jar
You can download Apache Derby (derby.jar) [1] or use JDK8's one

2. Download testcases [2][3][4], then compile and run following command
$ javac  SetupJavaDB.java JdbcRowSetProvider.java 
JdbcRowSetProviderA.java

3. Create DB
$ java -cp derby/lib/derby.jar:. SetupJavaDB

4. Run testcases
### Use DriverManager and createJdbcRowSet() ###
$ java -cp derby/lib/derby.jar:. JdbcRowSetProvider
### Use createJdbcRowSet() ###
$ java -cp derby/lib/derby.jar:. JdbcRowSetProviderA

On JDK8
$ ~/jdk8_181/jdk1.8.0_181/jre/bin/java -showversion -cp 
derby/lib/derby.jar:. JdbcRowSetProvider
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

1,One
2,Two
3,Three
1,One
2,Two
3,Three
$ ~/jdk8_181/jdk1.8.0_181/jre/bin/java -showversion -cp 
derby/lib/derby.jar:. JdbcRowSetProviderA
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

1,One
2,Two
3,Three

On JDK12
$ ~/jdk-12+12/bin/java -showversion -cp derby/lib/derby.jar:. 
JdbcRowSetProvider
openjdk version "12-ea" 2019-03-19
OpenJDK Runtime Environment 19.3 (build 12-ea+12)
OpenJDK 64-Bit Server VM 19.3 (build 12-ea+12, mixed mode)
1,One
2,Two
3,Three
Exception in thread "main" java.sql.SQLException: No suitable driver 
found for jdbc:derby:javadb/db
        at 
java.sql/java.sql.DriverManager.getConnection(DriverManager.java:702)
        at 
java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
        at 
java.sql.rowset/com.sun.rowset.JdbcRowSetImpl.connect(JdbcRowSetImpl.java:643)
        at 
java.sql.rowset/com.sun.rowset.JdbcRowSetImpl.prepare(JdbcRowSetImpl.java:654)
        at 
java.sql.rowset/com.sun.rowset.JdbcRowSetImpl.execute(JdbcRowSetImpl.java:556)
        at JdbcRowSetProvider.main(JdbcRowSetProvider.java:30)
$ ~/jdk-12+12/bin/java -showversion -cp derby/lib/derby.jar:. 
JdbcRowSetProviderA
openjdk version "12-ea" 2019-03-19
OpenJDK Runtime Environment 19.3 (build 12-ea+12)
OpenJDK 64-Bit Server VM 19.3 (build 12-ea+12, mixed mode)
Exception in thread "main" java.sql.SQLException: No suitable driver 
found for jdbc:derby:javadb/db
        at 
java.sql/java.sql.DriverManager.getConnection(DriverManager.java:702)
        at 
java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
        at 
java.sql.rowset/com.sun.rowset.JdbcRowSetImpl.connect(JdbcRowSetImpl.java:643)
        at 
java.sql.rowset/com.sun.rowset.JdbcRowSetImpl.prepare(JdbcRowSetImpl.java:654)
        at 
java.sql.rowset/com.sun.rowset.JdbcRowSetImpl.execute(JdbcRowSetImpl.java:556)
        at JdbcRowSetProviderA.main(JdbcRowSetProviderA.java:18)
===========================

[1] https://db.apache.org/derby/derby_downloads.html
[2] https://cr.openjdk.java.net/~itakiguchi/jdk12-jdbc/SetupJavaDB.java
[3] 
https://cr.openjdk.java.net/~itakiguchi/jdk12-jdbc/JdbcRowSetProvider.java
[4] 
https://cr.openjdk.java.net/~itakiguchi/jdk12-jdbc/JdbcRowSetProviderA.java



More information about the core-libs-dev mailing list