2011-01-27 2 views
1

У меня возникли проблемы с получением моих программ OSGI для распознавания/использования драйвера mysql jdbc.Драйвер JDBC в OSGI (Eclipse IDE)

У меня есть пакет, который специально предназначен для ввода данных в базу данных mysql. Я скопировал все те же методы, что и в тестовой программе (не-OSGI). Я не могу создать соединение suing 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();

  • У кого-нибудь есть решение этой проблемы или столкнулись с этим?


Спасибо, что позаботились о Exception ClassNotFound. Теперь у меня есть ошибка, указывающая, что драйвер не подходит. Я знаю, что OSGI имеет некоторые проблемы с драйверами и т. Д. Может кто-то порекомендовать способ обойти это?

Я поместил jdbc jar в папки установочного bin java и в папку 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; 

Console Output, ошибка: OSGi> запустить 7 Service Data Base (MYSQL) Запуск Класс не Loaded Нет подходящий драйвер найден для JDBC: MySQL: // локальный/timedb Исключение в потоке «резьбовых 1 "INSERT INTO appliance1 ...

У кого-нибудь есть понимание этой проблемы?

Благодаря

+0

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

ответ

2

Class.forName(String) принимает полное имя класса, а не банку файл. Вы должны использовать что-то вроде

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

Я знаю, что у этого есть 3 года, но я отвечаю на всякий случай, если кто-то его разобьет. , поэтому проблема заключается в том, что пакет не видит банку из кладовой, поэтому вам нужно импортировать свои пакеты в манифест. так, как я это сделал, я создал отдельный пакет, содержащий кусок соединителя mysql. newProject> плагин из существующей банки; затем я добавил все свои пакеты в «экспортированные пакеты» в файл манифеста. Затем в моем первом комплекте я добавил все пакеты соединителя в «импортированные пакеты», и он сработал.

Смежные вопросы