db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Roy.Mi...@comcast.net
Subject Re: Can't Load Embedded Driver
Date Mon, 08 Aug 2011 20:53:53 GMT
That bottom level plumbing has been working perfectly for two years in dev.  I remember thinking
it was pretty cool and developer-friendly.  I had essentially NO trouble getting it all up
and working.  I have now added the code to explicitly load the driver.  It works fine in
dev, but not deployed in a jar (java.lang.ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver).  CLASSPATH
surely would be the usual suspect, but echo %CLASSPATH% yields " C:\Program Files\Apache\db-derby-10.8.1.2-bin\lib\derby.jar;."
(derby.jar really IS in that location)  and  java org.apache.derby.jdbc.EmbeddedDriver yields
"Exception in thread "main" java.lang.NoSuchMethodError: main" as Rick says it should.  So,
WTF am I doing wrong?  In Unix, I would have double-checked rwx permissions (maybe Intellij
Idea is running as root) , but I'm not as familiar with this stuff in Windows. 

----- Original Message -----
From: "Rick Hillegas" <rick.hillegas@oracle.com> 
To: "Derby Discussion" <derby-user@db.apache.org> 
Sent: Monday, August 8, 2011 3:24:09 PM 
Subject: Re: Can't Load Embedded Driver 

Hi Roy, 

Thanks for including the code snippet. As Raymond points out, you are 
not loading the driver explicitly. This should not be necessary if you 
are using Java 6 or 7. However, driver autoloading does not happen in 
Java 5 and earlier versions of Java. What version of Java are you using? 

Thanks, 
-Rick 

On 8/8/11 11:55 AM, Raymond Kroeker wrote: 
> Hi Roy, 
> 
> The fqcn, is the fully qualified class name of the driver.  So in your 
> code you're using the driver manager to grab a connection; however I 
> don't see a reference to loading the driver: 
> http://db.apache.org/derby/papers/DerbyTut/embedded_intro.html#embedded_driver 
> 
> Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance(); 
> 
> Raymond 
> 
> On Mon, Aug 8, 2011 at 11:47,<Roy.Minet@comcast.net>  wrote: 
>> I do not know what an "fqcn" is.  I am running the latest Derby release, 
>> 10.8.1.2.  The code pasted in below works great in the dev environment 
>> (IntelliJ Idea), but the same code packaged in a jar cannot find the driver 
>> with CLASSPATH set correctly. 
>> 
>>     public static Connection getConnection() 
>>     { 
>>        Connection c = null; 
>>        try 
>>        {             // The connectionURL 
>> is "jdbc:derby:EMDatabase;create=true" 
>>           c = DriverManager.getConnection(connectionURL); 
>>           c.setAutoCommit(false); 
>>        } 
>>        catch (Throwable e) 
>>        { 
>>           log(3, "Unable to connect to " + dbName + ":  " + e.getMessage());

>>           stopDBMS(); 
>>           System.exit(3); 
>>        } 
>>        return c; 
>>     } 
>> 
>> 
>> 
>> ________________________________ 
>> 
>> From: "Raymond Kroeker"<raykroeker@gmail.com> 
>> 
>> To: "Derby Discussion"<derby-user@db.apache.org> 
>> Sent: Monday, August 8, 2011 10:08:11 AM 
>> Subject: Re: Can't Load Embedded Driver 
>> 
>> Can you try specifying the driver as a fqcn? If that doesn't solve the issue 
>> please paste relevant code around how you load the driver and obtain a 
>> connection. 
>> 
>> Raymond 
>> 
>> On Aug 8, 2011 6:55 AM,<Roy.Minet@comcast.net>  wrote: 
>>> 
>>> Rick, 
>>> 
>>> 
>>> 
>>> Thank you very much for offering your help.  Apparently my CLASSPATH is 
>>> good.  I typed in "java org.apache.derby.jdbc.EmbeddedDriver" and did indeed

>>> get exactly the expected "Exception in thread "main" 
>>> java.lang.NoSuchMethodError: main" error message.  What else could be 
>>> causing  my problem? 
>>> 
>>> 
>>> 
>>> Roy 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> ----- Original Message ----- 
>>> 
>>> 
>>> From: "Rick Hillegas"<rick.hillegas@oracle.com> 
>>> To: "Derby Discussion"<derby-user@db.apache.org> 
>>> Sent: Monday, August 8, 2011 9:00:58 AM 
>>> Subject: Re: Can't Load Embedded Driver 
>>> 
>>> On 8/7/11 9:54 AM, Roy.Minet@comcast.net wrote: 
>>>> I have been happily using Derby for two years within IntelliJ Idea, 
>>>> but have now hit a wall trying to deploy the application I developed. 
>>>> I have tried setting the path to derby.jar on the command line and/or 
>>>> in the CLASSPATH environment variable to no avail.  The embedded 
>>>> driver doesn't load; the error message is, "No suitable driver found 
>>>> for jdbc:derby:EMDatabase;create=true".  I'm under Windows XP Pro. 
>>>> Any help would be appreciated. 
>>>> 
>>>> Roy Minet 
>>>> 
>>>> 
>>> Hi Roy, 
>>> 
>>> This is almost always a CLASSPATH problem. With the same CLASSPATH, try 
>>> the following experiment: 
>>> 
>>> java org.apache.derby.jdbc.EmbeddedDriver 
>>> 
>>> If the CLASSPATH is good, you should see this error: 
>>> 
>>> Exception in thread "main" java.lang.NoSuchMethodError: main 
>>> 
>>> Hope this helps, 
>>> -Rick 
> 
> 


Mime
View raw message