2011-01-27 12 views
1

私のOSGIプログラムを認識するためにいくつかの問題があります。/ mysql jdbcドライバを利用してください。OSGI(Eclipse IDE)のJDBCドライバ

私はmysqlデータベースにデータを入力するためのspeficcallyのバンドルを持っています。テストプログラム(非OSGI)と同じ方法ですべてコピーしました。 DriverManager.getConnection()を使用して接続を作成できません。

ドライバをクラスパスに追加し、Class.forName()を使用するなど、このサイトのすべてのソリューションを試しました。おそらく、間違った文字列argをforName()に入力しようとしています。

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フォルダとバンドルの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の:// localhost /をtimedb 例外スレッドの「スレッド1 "INSERT INTO appliance1 ...

誰でもこの問題についての洞察はありますか?

おかげ

+0

'Class.forName(" ClassNameIsExpectedHereNotJarName ");' – Nishant

答えて

2

Class.forName(String)は、完全修飾クラス名ではなく、jarファイルを取ります。

0

私はこれが3年あることを知っていますが、誰かがそれをgooglesする場合には私は答えています。 問題は、バンドルがクラスローからのジャーを参照しないため、マニフェストにパッケージをインポートする必要があるということです。 私のやり方は、mysql connector jarを含む別のバンドルを作成したことです。 newProject>既存のjarからのプラグイン。マニフェストファイルの "exported packages"にすべてのパッケージを追加しました。その後、私の最初のバンドルでは、「インポートされたパッケージ」にすべてのコネクタのパッケージを追加していました。

関連する問題