【发布时间】:2011-06-16 20:50:54
【问题描述】:
我在让我的 OSGI 程序识别/使用 mysql jdbc 驱动程序时遇到了一些问题。
我有一个专门用于将数据输入 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://localhost/timedb 线程“Thread-1”中的异常 INSERT INTO appliance1...
有人对这个问题有任何见解吗?
谢谢
【问题讨论】:
-
Class.forName("ClassNameIsExpectedHereNotJarName");