在我的Java項目中我正在使用H2內存數據庫,爲此我需要在初始化我的應用程序時加載JDBC驅動程序。我想/需要加載H2 .jar文件動態的,所以我做到以下幾點:如何訪問位於源文件夾內的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源代碼文件夾中的「庫」文件夾(也就是,在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構建路徑是沒有選擇給我。編輯2:我已經嘗試加載「jar:file:my/app/sub/package/h2.jar!/」,但那不適用於我。
在此先感謝所有有幫助的創意!
親切的問候,馬蒂亞斯
你試過jar嗎:file:my/app/sub/package/h2.jar? – kosa
你描述的「奇怪的設置」是一個非常正常的目錄結構。沒有理由將JAR文件放入您的'src'文件夾中。這聽起來像你在你的類路徑中沒有'h2.jar'。 –
@thinksteep:是的,試過了,但沒有奏效。 – Matthias