2011-01-27 102 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的插件;然后我将其所有软件包都添加到其清单文件中的“导出的软件包”中。然后,在我的第一个包中,我将连接器的所有包添加到“导入的包”,并且工作正常。