You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-user@db.apache.org by Marcin Krol <mr...@gmail.com> on 2010/05/28 18:44:58 UTC
java.sql.SQLException: No suitable driver
Hello everyone,
I'm trying to use Derby here as embedded database in our test automation
framework (that deploys itself on the remote endpoint and executes some
Java classes to test functionality of the product).
Code:
private void createDerbyConnection() throws ClassNotFoundException,
SQLException
{
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
String dburl = "jdbc:derby:DerbyDB;create=true";
derbyconn = DriverManager.getConnection(dburl);
derbyconn.setAutoCommit(false);
derbyst = derbyconn.createStatement();
}
Now, the weird thing is that when the same class is using Derby in
standalone program (ran e.g. on Linux) *on the same host*, or in Eclipse
on my laptop, it all runs fine - I can connect to the db and operate on
it all right.
It's only when I deploy the thing remotely, I get exception
"java.sql.SQLException: No suitable driver" on line:
derbyconn = DriverManager.getConnection(dburl);
Note: the EmbeddedDriver jdbc class is most probably loaded fine, which
is reinforced by the fact that if I delete derby.jar from classpath I
get ClassNotFoundException.
Some people on the net suggested that this exception is being caused by
wrong db url, but I can't see what's possibly wrong with my db url. I
was under impression that this is correct dburl for embedded derby
driver which should be in derby.jar.
--
Regards,
mk
--
Premature optimization is the root of all fun.
Re: java.sql.SQLException: No suitable driver
Posted by Kristian Waagan <Kr...@Sun.COM>.
On 28.05.2010 18:44, Marcin Krol wrote:
> Hello everyone,
>
> I'm trying to use Derby here as embedded database in our test
> automation framework (that deploys itself on the remote endpoint and
> executes some Java classes to test functionality of the product).
>
> Code:
>
> private void createDerbyConnection() throws ClassNotFoundException,
> SQLException
> {
> Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
> String dburl = "jdbc:derby:DerbyDB;create=true";
> derbyconn = DriverManager.getConnection(dburl);
> derbyconn.setAutoCommit(false);
> derbyst = derbyconn.createStatement();
> }
>
Hi Marcin,
Sorry for this vey vague answer, but could this have to do with
classloaders?
Is the framwork you are using doing anything explicit about classloaders?
There is some classloader sensitive code in DriverManager.
Not sure in which context I stumbled over this, but I may have worked
around the issue by using the Class.forName() method that takes a
ClassLoader argument. Now, if this is the problem and the proposed fix
is sound, you just have to figure out which classloader to use when
loading the driver class :)
Regards,
--
Kristian
>
> Now, the weird thing is that when the same class is using Derby in
> standalone program (ran e.g. on Linux) *on the same host*, or in
> Eclipse on my laptop, it all runs fine - I can connect to the db and
> operate on it all right.
>
> It's only when I deploy the thing remotely, I get exception
> "java.sql.SQLException: No suitable driver" on line:
>
> derbyconn = DriverManager.getConnection(dburl);
>
> Note: the EmbeddedDriver jdbc class is most probably loaded fine,
> which is reinforced by the fact that if I delete derby.jar from
> classpath I get ClassNotFoundException.
>
> Some people on the net suggested that this exception is being caused
> by wrong db url, but I can't see what's possibly wrong with my db url.
> I was under impression that this is correct dburl for embedded derby
> driver which should be in derby.jar.
>
>