db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Davide Grandi <davide.gra...@email.it>
Subject Re: java.sql.SQLException: No suitable driver found for jdbc:derby:memory:sampledb;create=true
Date Fri, 26 Jun 2020 18:59:10 GMT
It seems to me that you're running test with java 8 ( 50 => 6, 51 => 7, 
52 => 8, ...).

But Derby requires java 9.

Bye,

     Davide Grandi

On 26/06/2020 17:11, Russell Bateman wrote:
> I get UnsupportedClassVersionErrorin each case. Here's what that looks 
> like:
>
>     testDirectlyToDerby(com.imatsolutions.database.ApacheDerbyTest)
>     java.lang.UnsupportedClassVersionError:
>     *org/apache/derby/impl/jdbc/EmbedConnection*has been compiled by a
>     more recent version of the Java Runtime (class file version 53.0),
>     this version of the Java Runtime only recognizes class file
>     versions up to 52.0
>         at java.lang.ClassLoader.defineClass1(Native Method)
>         at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
>         at
>     java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
>         at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
>         at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
>         at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
>         at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
>         at java.security.AccessController.doPrivileged(Native Method)
>         at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
>         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
>         at java.lang.Class.forName0(Native Method)
>         at java.lang.Class.forName(Class.java:264)
>         at
>     com.imatsolutions.database.ApacheDerbyTest.testDirectlyToDerby(ApacheDerbyTest.java:78)
>
>     java.lang.UnsupportedClassVersionError:
>     *org/apache/derby/shared/common/util/ArrayUtil*has been compiled
>     by a more recent version of the Java Runtime (class file version
>     53.0), this version of the Java Runtime only recognizes class file
>     versions up to 52.0
>         ...
>
>     java.lang.UnsupportedClassVersionError:
>     *org/apache/derby/jdbc/BasicEmbeddedDataSource40*has been compiled
>     by a more recent version of the Java Runtime (class file version
>     53.0), this version of the Java Runtime only recognizes class file
>     versions up to 52.0
>         ...
>
> Just in case there is an older version of Derby in there somewhere, 
> command-line Maven reports:
>
>     [echoproperties]
>     maven.dependency.org.apache.derby.derby.jar.path=/home/russ/.m2/repository/org/apache/derby/derby/10.15.2.0/derby-10.15.2.0.jar
>     [echoproperties]
>     maven.dependency.org.apache.derby.derbyshared.jar.path=/home/russ/.m2/repository/org/apache/derby/derbyshared/10.15.2.0/derbyshared-10.15.2.0.jar
>     [echoproperties]
>     maven.dependency.org.apache.derby.derbytools.jar.path=/home/russ/.m2/repository/org/apache/derby/derbytools/10.15.2.0/derbytools-10.15.2.0.jar
>     .
>     .
>     .
>     [echoproperties]
>     org.apache.derby\:derby\:jar=/home/russ/.m2/repository/org/apache/derby/derby/10.15.2.0/derby-10.15.2.0.jar
>     [echoproperties]
>     org.apache.derby\:derbyshared\:jar=/home/russ/.m2/repository/org/apache/derby/derbyshared/10.15.2.0/derbyshared-10.15.2.0.jar
>     [echoproperties]
>     org.apache.derby\:derbytools\:jar=/home/russ/.m2/repository/org/apache/derby/derbytools/10.15.2.0/derbytools-10.15.2.0.jar
>
> All of this works in IntelliJ IDEA, which itself reports this and 
> doesn't get UnsupportedClassVersionErrorwhen I run this unit test:
>
>     - External Libraries
>       > Maven: org.apache.derby:derby:10.15.2.0
>       > Maven: org.apache.derby:derbyshared:10.15.2.0
>       > Maven: org.apache.derby:derbytools:10.15.2.0
>
> Again, thanks for looking at this.
>
> On 6/26/20 6:46 AM, Rick Hillegas wrote:
>> 1) Do you have a stack trace showing what class can't be resolved?
>>
>> 2) What happens if you do a Class.forName() on the following classes, 
>> which live, respectively, in derby.jar, derbyshared.jar, and 
>> derbytools.jar:
>>
>> org.apache.derby.impl.jdbc.EmbedConnection
>> org.apache.derby.shared.common.util.ArrayUtil
>> org.apache.derby.jdbc.BasicEmbeddedDataSource40
>>
>> Thanks,
>> -Rick
>>
>> On 6/25/20 4:20 PM, Russell Bateman wrote:
>>> Oops. I spoke too soon. I still had my JUnit tests @Ignore'd. It 
>>> doesn't work yet. I still get "no suitable driver." I added 
>>> derbytools too, but that made no difference. Further thoughts?
>>>
>>>
>>> On 6/25/20 5:01 PM, Russell Bateman wrote:
>>>> Thank you; that's very kind. It now works. (I'm not using 
>>>> DataSources for now.) I greatly appreciate your help.
>>>>
>>>> Best regards,
>>>> Russ
>>>>
>>>> On 6/25/20 4:48 PM, Rick Hillegas wrote:
>>>>> The 10.15 family of releases introduced a JPMS modularization of 
>>>>> Derby. That re-factored the code a bit. You will need to add 
>>>>> derbyshared.jar to the classpath and build dependencies. If you 
>>>>> are using DataSources, then you will also need to add 
>>>>> derbytools.jar. Please see the detailed release note for 
>>>>> DERBY-6945 on the 10.15.1.3 download page: 
>>>>> http://db.apache.org/derby/releases/release-10.15.1.3.html
>>>>>
>>>>> Hope this helps,
>>>>> -Rick
>>>>>
>>>>> On 6/25/20 1:28 PM, Russell Bateman wrote:
>>>>>> I have very recent code that works in a JUnit test case.
>>>>>>
>>>>>>    @Test
>>>>>>    public void test()
>>>>>>    {
>>>>>>       final String DATABASE = 
>>>>>> "jdbc:derby:memory:sampledb;create=true";
>>>>>>       final String USERNAME = "sa";
>>>>>>       final String PASSWORD = "sa";
>>>>>>
>>>>>>       final String CREATE_TABLE = "CREATE TABLE names ( oid INT
>>>>>>    GENERATED ALWAYS AS IDENTITY, name VARCHAR( 20 ) )";
>>>>>>       final String INSERT_NAME1 = "INSERT INTO names ( name )

>>>>>> VALUES (
>>>>>>    'Jack' )";
>>>>>>       final String QUERY        = "SELECT oid, name FROM
names";
>>>>>>
>>>>>>       Connection connection = null;
>>>>>>
>>>>>>       try
>>>>>>       {
>>>>>>         connection = DriverManager.getConnection( DATABASE,

>>>>>> USERNAME,
>>>>>>    PASSWORD );
>>>>>>
>>>>>>         Statement statement = connection.createStatement();
>>>>>>         ...
>>>>>>
>>>>>> In /pom.xml/, I have the following:
>>>>>>
>>>>>>    <dependency>
>>>>>> <groupId>org.apache.derby</groupId>
>>>>>> <artifactId>*derby*</artifactId>
>>>>>>       <version>10.15.2.0</version>
>>>>>>       <scope>test</scope>
>>>>>>    </dependency>
>>>>>>
>>>>>> I only want to use Derby _in-memory_ backing some unit test cases

>>>>>> that need a database (not requiring a running server or dæmon, 
>>>>>> etc.). It all works perfectly inside IntelliJ IDEA.
>>>>>>
>>>>>> However, when I build from the command line (mvn clean package),

>>>>>> I see this and can find no solution:
>>>>>>
>>>>>>    java.sql.SQLException: No suitable driver found for
>>>>>>    jdbc:derby:memory:sampledb;create=true
>>>>>>         at 
>>>>>> java.sql.DriverManager.getConnection(DriverManager.java:689)
>>>>>>         at 
>>>>>> java.sql.DriverManager.getConnection(DriverManager.java:247)
>>>>>>         at
>>>>>> com.imatsolutions.database.ApacheDerbyTest.testDirectlyToDerby(ApacheDerbyTest.java:78)

>>>>>>
>>>>>>
>>>>>> In /pom.xml/, I have tried adding the following, and I have tried

>>>>>> many other solutions, some of which are supposed to be obsolete (

>>>>>> Class.for(...), DriverManager.registerDriver( ... ), etc. ), but

>>>>>> cannot find a happy solution.
>>>>>>
>>>>>>    <dependency>
>>>>>> <groupId>org.apache.derby</groupId>
>>>>>> <artifactId>*derbyclient*</artifactId>
>>>>>>       <version>10.15.2.0</version>
>>>>>>       <scope>test</scope>
>>>>>>    </dependency>
>>>>>>
>>>>>> Any comment would be welcome.
>>>>>>
>>>>>> Thanks.

-- 
Ing. Davide Grandi
email    : davide.grandi@email.it
mobile   : +39 339 7468 778
linkedin : http://linkedin.com/in/davidegrandi


Mime
View raw message