在我的OSGi環境中,我試圖預加載數據庫驅動程序以供進一步使用。通常情況下,可以這樣做:OSGi Felix和BndTools - 按名稱加載類
Class.forName("com.mysql.jdbc.Driver");
之後,可以創建連接。但是,如果我在Felix的OSGi中使用它,他說該類無法找到(ClassNotFoundException
),並且無法創建連接。但是,當我做這樣的事情(省略try-catch
):
com.mysql.jdbc.Driver d = new com.mysql.jdbcDriver
Class.forName("com.mysql.jdbc.Driver");
然後一切工作正常,並創建連接。但是,這不是很漂亮,因爲駕駛員級別不能交換。
有沒有辦法用第一種方法加載類?我假設我必須提供正確的類加載器。但我從哪裏得到?
MySQL驅動程序是作爲OSGi包裝程序包提供的。
如果您的源代碼中包含類名,則永遠不需要使用Class.forName加載類動態類。只有通過運行時機制獲取類名時,才應該使用動態類加載。 – 2012-03-06 07:47:41