David Harrigan wrote:
[...]

I'm invoking my class under test and in that class
I have:

System.setProperty("derby.system.home", getDerbySystemHome());
connection = DriverManager.getConnection("jdbc:derby:searchdb",
System.getProperties());

The getDerbySystemHome() returns a directory that is inside the project directory within eclipse, (projectname/web/WEB-INF/classes/)
yet I continuously get this error when I try to execute the test:

EmbedSQLException : Database 'searchdb' not found.

If I change the connection string to:

jdbc:derby:searchdb;create=true

It creates the database, but at the ROOT of the eclipse project! i.e.,

(projectname/searchdb)

My question is this, why is Derby not honouring the derby.system.home
that I am explicitly setting in the System properties and then
subsequently
passing into the DriverManager...

derby.system.home is a static property that must be set before Derby starts, i.e. before the driver is loaded (I assume you are using the embedded driver). When you call getConnection(...), Derby has already started, so the new property value will have no effect. Does setting the property before loading the driver (Class.forName(...)) resolve your issue?


--
John

Reply via email to