No suitable driver

开发eclipse插件,在插件中自动读取project的classLoader,因为project中存在数据库的驱动程序,但是在写完成以后发现提示如下错误:

No suitable driver

代码如下:

   ProjectClassLoader projectLoader;
   try {
    projectLoader = new ProjectClassLoader((IJavaProject)JavaCore.create(tableNode.getSessionNode().getProfile().getProject()));
   } catch (JavaModelException e) {
    e.printStackTrace();
    return ;
   }
   //old classloader
   ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
   Thread.currentThread().setContextClassLoader(projectLoader);

 

 

看到mysql的网站上有这样一段描述

"No suitable driver" is an error message that is given in either of two situations: the class was not found on the classpath, or the JDBC URL is wrong. 

 

个人感觉应该是jar文件不能夹在造成的,怎么这样无法设置classLoader呢,比较奇怪。

 

 

终于解决了,原来DriverManager在内部处理的时候比较ClassLoader,自己定义的ClassLoader不起作用,可以采用下面的二种方式进行处理

1、通过Driver的方法connect来代替DriverManager的getConnection方法,这样是在Thread的classloader中调用,避免这个问题。

2、自己写一个DriverManager类,这样可以避免这个问题,

 

本来打算采用通过取得的classLoader来反射DriverManager的,但是提示不让反射,只能通过上面的二种方式解决了。

你可能感兴趣的:(No suitable driver)