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" <[email protected]> To: "Derby Discussion" <[email protected]> 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, <[email protected]> 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" <[email protected]> > To: "Derby Discussion" <[email protected]> > 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,<[email protected]> 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"<[email protected]> >>> >>> To: "Derby Discussion"<[email protected]> >>> 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,<[email protected]> 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"<[email protected]> >>>> To: "Derby Discussion"<[email protected]> >>>> Sent: Monday, August 8, 2011 9:00:58 AM >>>> Subject: Re: Can't Load Embedded Driver >>>> >>>> On 8/7/11 9:54 AM, [email protected] 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
