2011-01-27 103 views
1

我在獲取我的OSGI程序以識別/利用mysql jdbc驅動程序時遇到了一些問題。OSGI中的JDBC驅動程序(Eclipse IDE)

我有一個專門用於將數據輸入到mysql數據庫的包。我已經複製了與測試程序(非OSGI)相同的所有方法。我無法創建一個連接起訴DriverManager.getConnection()。

我已經將驅動程序添加到類路徑中,並且嘗試了使用Class.forName()這個網站上的所有解決方案。可能我在forName()中輸入了錯誤的字符串arg。

public void createConn(String URL, String DBName, String username, String password){ 

try { 
    Class.forName("mysql-connector-java-5.1.14-bin.jar"); 
    } catch (ClassNotFoundException e1) { 
    e1.printStackTrace(); 
    } 
    try { 
    conn = DriverManager.getConnection(URL + DBName,username,password); 
    System.out.println("Connection Created"); 
    stmt = conn.createStatement(); 
    System.out.println("Statement Created"); 
    //data = new ApplianceData(); 

    //flag = true; 
    //this.writeThread = new Thread(); 
    //writeThread.start(); 

    } catch (SQLException e) { 
    System.err.println(e.getMessage()); 
    } 
} 
  • 誰能告訴我他們的Class.forName使用的參數();

  • 有沒有人有解決這個問題或遇到此問題?


謝謝,接過ClassNotFound的異常的護理。現在我有一個錯誤,指出該驅動程序不適合。我知道OSGI有一些與司機等問題。有人可以推薦一種方法來繞過這個?

我已經將jdbc jar放在java安裝bin文件夾中,並放在了bundle的bin文件夾中。

ClassLoader DBHCL = ClassLoader.getSystemClassLoader(); 
DBHCL.loadClass("com.mysql.jdbc.Driver"); 
Class.forName("com.mysql.jdbc.Driver", true, DBHCL).newInstance(); 
System.out.println("Class Loaded"); 
//DriverManager.getDriver("jdbc:mysql://localhost/timedb"); 
//System.out.println("Driver Gotten"); 
conn = DriverManager.getConnection(URL + DBName,username,password); 
System.out.println("Connection Created"); 
stmt = conn.createStatement(); 
System.out.println("Statement Created"); 
connFlag = true; 

控制檯輸出,錯誤: 的OSGi>開始7 數據庫服務(MYSQL)啓動 類加載 找到JDBC沒有合適的驅動程序:MySQL的://本地主機/ timedb 異常在線程「Thread- 1「INSERT INTO appliance1 ...

有沒有人對此問題有所瞭解?

感謝

+0

`Class.forName(「ClassNameIsExpectedHereNotJarName」);`` – Nishant 2011-01-28 07:14:30

回答

2

Class.forName(String)需要一個完全合格的類名,而不是一個jar文件。你應該使用類似於

Class.forName("com.mysql.jdbc.Driver"); 
0

我知道這有3年,但我回答只是爲了防止有人使用它。 所以問題在於bundle沒有從classloade中看到jar,所以你需要在manifest中導入它的包。 我的方式,是我創建了一個單獨的包含mysql連接器jar的包。 newProject>來自現有jar的插件;然後我將其所有軟件包都添加到其清單文件中的「導出的軟件包」中。然後,在我的第一個包中,我將連接器的所有包添加到「導入的包」,並且工作正常。