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)

私はこのコードを使用してlibをロードします:

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 に答える