在我的 Java 项目中,我使用的是 H2 内存数据库,当我初始化我的应用程序时,我必须为此加载 JDBC 驱动程序。我想要/需要动态加载 H2 .jar 文件,所以我执行以下操作:
String classname = "org.h2.Driver";
URL u = new URL("jar:file:libs/h2.jar!/");
URLClassLoader ucl = new URLClassLoader(new URL[] { u });
Driver d = (Driver) Class.forName(classname, true, ucl).newInstance();
DriverManager.registerDriver(new DriverShim(d));
当我将 H2 .jar 文件放入我的 Java 源代码文件夹之外的“libs”文件夹中时(也就是说,在 Eclipse 中,这个“libs”目录与“src”文件夹处于同一级别),那么这种方法可以正常工作. 但是,不幸的是,我必须将此 H2 .jar 文件放入源代码文件夹树内的文件夹中,但位于主类文件夹下方。
例如,我的 Java 包结构在 Eclipse 中如下所示:
<project>/src/my/app/MyApp.java // main class of my application
<project>/src/my/app/sub/package/h2.jar // how to access this?
<project>/libs/h2.jar // loading from here works
我知道这很愚蠢,但不幸的是我必须使用这种奇怪的设置。但我不知道的是:如何编辑我的 Java 代码(如上所列)以使用此设置?
编辑:这也必须在 Eclipse 之外工作,因此将 JAR 文件添加到 Eclipse 中的 Java 构建路径对我来说是没有选择的。
EDIT2:我已经尝试加载“jar:file:my/app/sub/package/h2.jar!/”,但这对我不起作用。
提前感谢所有有用的想法!
亲切的问候,马蒂亚斯