从运行的插件在运行时加载类

时间:2014-06-22 13:15:18

标签: java eclipse

我有一个连接到数据库的插件。我不想在我的插件中为驱动程序捆绑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

1 个答案:

答案 0 :(得分:0)

在这种情况下,请看下面的讨论。

No suitable driver found for 'jdbc:mysql://localhost:3306/mysql

我相信你的情况很相似。仔细检查您正在使用的JDBC URL。

BTW请注意,您不包含实际抛出异常(DriverManager.getConnection())的代码,并且其主题绝对令人困惑。如果您重新定义您的主题,例如&#34;在JDBC连接期间找不到合适的驱动程序&#34;你可以在一秒钟内找到链接的讨论。