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