4

我想在我的应用程序加载时加载 h2 数据库驱动程序。我使用 URLClassLoader 将外部库加载到类路径中,但出现以下错误:

19:25:56 [SEVERE] java.sql.SQLException: No suitable driver found for jdbc:h2:x\y\store.h2db
19:25:56 [SEVERE]       at java.sql.DriverManager.getConnection(Unknown Source)
19:25:56 [SEVERE]       at java.sql.DriverManager.getConnection(Unknown Source)

我使用此代码加载我的库:

File myJar = new File("./lib/h2.jar");
URL url = myJar.toURL();  
URL[] urls = new URL[]{url};
URLClassLoader cl = new URLClassLoader(urls, this.getClass().getClassLoader());
Driver drv = (Driver) Class.forName("org.h2.Driver", true, cl).newInstance();
DriverManager.registerDriver(drv);

提前感谢您的帮助。

4

1 回答 1

0

更新:

我找到了解决方案,使用以下代码加载 JAR 文件或类。

private void loadExternalDriver(File file) throws Exception {
    Method method = URLClassLoader.class.getDeclaredMethod("addURL", new Class[]{URL.class});
    method.setAccessible(true);
    method.invoke(ClassLoader.getSystemClassLoader(), new Object[]{file.toURI().toURL()});
}

在我的例子中:

File driver = new File("./lib/h2.jar");
this.loadExternalDriver(driver);
Class.forName("org.h2.Driver");

它工作得很好。谢谢你的帮助。

于 2012-12-20T10:13:32.913 回答