我有一个连接到数据库的插件。我不想在我的插件中为驱动程序捆绑jar。相反,我想从用户项目中获取它并在运行时加载它。下面是我用来实现相同的代码。 我收到错误“找不到合适的驱动程序......” 请指出可能出错的地方。
jPrj - 是我想要加载驱动程序类的项目的IJavaProject对象。 databaseType - “mysql”
final String[] classPathEntries = JavaRuntime.computeDefaultRuntimeClassPath(jPrj);
for (int i = 0; i < classPathEntries.length; i++) {
final String entry = classPathEntries[i];
if (entry.contains(databaseType)) {
final IPath path = new Path(entry);
final URL url = path.toFile().toURI().toURL();
urlList.add(url); //the value of url at this point is-- file:/C:/.../mysql-connector-java-5.1.15-bin.jar -- the path on my disk
final ClassLoader parentClassLoader = jPrj.getClass().getClassLoader();
final URL[] urls = urlList.toArray(new URL[urlList.size()]);
final URLClassLoader classLoader = new URLClassLoader(urls, parentClassLoader);
try {
final ClassLoader loader = new URLClassLoader(urls);
loader.loadClass("com.mysql.jdbc.Driver");
Class<?> clazz = loader.loadClass("java.sql.DriverManager");
} catch (final ClassNotFoundException ex) {
ex.printStackTrace();
}
break;
}
}
DriverManager.getConnection("jdbc:mysql://localhost:port/myDB", myuser, mypaswrd); //-- get exception from here
我不确定如何将clazz用于DriverManager.getConnection
答案 0 :(得分:0)
在这种情况下,请看下面的讨论。
No suitable driver found for 'jdbc:mysql://localhost:3306/mysql
我相信你的情况很相似。仔细检查您正在使用的JDBC URL。
BTW请注意,您不包含实际抛出异常(DriverManager.getConnection()
)的代码,并且其主题绝对令人困惑。如果您重新定义您的主题,例如&#34;在JDBC连接期间找不到合适的驱动程序&#34;你可以在一秒钟内找到链接的讨论。