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 22:06:30 GMT
Thanks for the suggestion, Myrna.  However, it's NOT Intellij Idea that is having a problem;
everything has been working perfectly in dev.  It's when I build a jar and just run under
Windows that the problem occurs.  I'm getting desperate, though, so I'll try  "PROGRA~1"
and/or  moving the jars to somewhere else  with no spaces in the path. 

----- Original Message -----
From: "Myrna van Lunteren" <m.v.lunteren@gmail.com> 
To: "Derby Discussion" <derby-user@db.apache.org> 
Sent: Monday, August 8, 2011 5:18:17 PM 
Subject: Re: Can't Load Embedded Driver 

On Mon, Aug 8, 2011 at 1:53 PM,  <Roy.Minet@comcast.net> wrote: 
> 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 
>> 
>> 
> 
Looks like it should work. Perhaps derby/intelliJ Idea/the jvm has 
trouble with the space in the classpath. I think with some tools I 
have to use the 8 character DOS equivalent (e.g. Progra~1 instead of 
Program Files) when I refer to directory names with spaces. 

So, perhaps it's worth a quick try to see if it works if you plop 
derby.jar and/or your other jar somewhere else than in the Program 
Files directory (and adjust the classpath too, of course). 

Myrna 

Mime
View raw message