File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes General Computing and the fly likes JDBC Driver detection error when running as Windows Service Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Engineering » General Computing
Bookmark "JDBC Driver detection error when running as Windows Service" Watch "JDBC Driver detection error when running as Windows Service" New topic

JDBC Driver detection error when running as Windows Service

Abhijit Basu

Joined: Mar 02, 2005
Posts: 1
Let me describe the setup first. I am uisng JDK 1.3. The classes12.jar (JDBC driver) has been placed in C:\jdk1.3\jre\lib\ext folder, so I have not explicitly added the jar to the classpath. My test program can make a JDBC connection fine from this windows machine to Oracle. Now, I create a jar of this code and the windows service basically loads the jar up when Windows starts. When run in this manner, I get ClassNotFoundException for "oracle.jdbc.driver.OracleDriver". However, I have a bat file that starts the jar up the same way (java -jar ReportServer.jar) and that seems to be able to make JDBC connections just fine. Below is a code excerpt being used for the connection:

//Get a Connection to the database
myConn = DriverManager.getConnection(dbUrl, rptUsername, rptPassword);

I am catching all the required exceptions etc.

Also, here's how the environment variables are set:

Any ideas? I dont know what I am doing wrong. This needs to run as a windows service. Thanks!
Jeanne Boyarsky
author & internet detective

Joined: May 26, 2003
Posts: 33126

Welcome to JavaRanch!

While this post does relate to JDBC, I'm moving it to our General Computing forum because it is more about classpaths on window services (since the batch file works)

[OCA 8 book] [Blog] [JavaRanch FAQ] [How To Ask Questions The Smart Way] [Book Promos]
Other Certs: SCEA Part 1, Part 2 & 3, Core Spring 3, TOGAF part 1 and part 2
David O'Meara

Joined: Mar 06, 2001
Posts: 13459


is not correct and can cause the Driver to be registered twice. This is only a problem if you try to remove Drivers (whcih I've never seen anyone do), but this is the preferred mechanism:

While it doesn't look like it does anything, the ClassLoader loads the Driver and as the Driver loads it is required to register itself with the DriverManager.

Have you tried taking the classes12.jar out of the lib/ext directory and getting the batch file to include it? There is a strange security ussue relating to the way Drivers get loaded, but I'm trying to remeber the ways to recreate the problem and how to solve it. the 'lib/ext' directory doesn't feel like the right place for it.

Sorry for being so vague :}

It is sorta covered in the JavaRanch Style Guide.
subject: JDBC Driver detection error when running as Windows Service
It's not a secret anymore!