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.


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