2016-04-01 2 views
2

Я пытаюсь подключиться к базе данных sql, созданной через mysql_workbench на Linux-машине. Я в настоящее время код через терминал с помощью текстовых редакторов, потому что это то, что я чувствую себя комфортно вДрайвер JDBC и путь класса terminal

Мой класс DatabaseConnection имеет следующий код, в основном с System.out.println-х, чтобы попытаться найти причины проблемы:.

final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; 
final String DB_URL = "jdbc:mysql://localhost:3306/mydb"; 

final String user = "root"; 
final String pass = "pass"; 

Connection connection; 
Statement statement; 

public DatabaseConnection(){ 

} 

public void connect(){ 
    System.out.println("Entering method"); 
    try { 
     System.out.println("Attempting to load driver"); 
     Class.forName(JDBC_DRIVER); 
     System.out.println("Driver Loaded");   
     connection = DriverManager.getConnection(DB_URL, user, pass); 
     System.out.println("Connection established"); 
     statement = connection.createStatement(); 
     System.out.println(" statement made"); 
     ResultSet resultSet = statement.executeQuery("show databases"); 
     System.out.println("statement executed"); 

     while(resultSet.next()){ 
      System.out.println(resultSet.next()); 
     } 
     System.out.println("finished printing result set"); 

     statement.close(); 
    } catch(ClassNotFoundException ex) { 
     System.out.println("Error: unable to load driver class!"); 
     System.exit(1); 
    } catch (SQLException sqle) { 
     System.out.println("Connection Error");   
     sqle.getErrorCode(); 
    } 

} 
} 

Я также есть Test класс, чтобы проверить это:

class Test { 

    public static void main(String[] args){ 
     DatabaseConnection connection = new DatabaseConnection(); 
     connection.connect(); 
    } 
} 

в настоящее время при его запуске в терминале мои команды:

javac -cp .:/lib/mysql-connector-java-5.1.38-bin.jar Test.java 

(В моей верхней папке, содержащей файлы .java, у меня есть Lib папку, содержащую мой драйвер JDBC)

Это компилируется нормально. Затем я запустить его с помощью

java -cp .:/lib/mysql-connector-java-5.1.38-bin.jar Test 

И я получаю следующее сообщение об ошибке:

java -cp .:/lib/mysql-connector-java-5.1.38-bin.jar Test 
Entering method 
Attempting to load driver 
Error: unable to load driver class! 

Так выглядит он не загружается драйвер в методе Class.forName() и не удается. Может ли кто-нибудь помочь в объяснении причин и возможных решений?

В mysql_workbench, я думаю, что база данных запущена и запущена, так как я могу запросить ее в командной строке запроса командной строки, чтобы показать базы данных и таблицы, которые в настоящее время пустые.

+0

Возможно, попытайтесь добавить период между толстой и косой черты, например, 'java -cp.: ./ lib/...'? –

+0

Спасибо, он подключен. Опубликуйте как ответ, и я укажу вам. Массивное спасибо! – shirafuno

+1

Просто боковое примечание: больше не нужно использовать 'Class.forName' для загрузки JDBC-драйвера, Java автоматически загрузит драйверы в classpath. –

ответ

1

Java не удалось найти файл JAR для драйвера JDBC для MySQL, поскольку -cp аргумента в

java -cp .:/lib/mysql-connector-java-5.1.38-bin.jar Test 

определяет два (двоеточия) населенные пунктов:

  1. .
  2. /lib/mysql-connector-java-5.1.38-bin.jar

Второе место интерпретируется как абсолютный путь . Для того, чтобы иметь его интерпретировать как относительный путь он должен начать с периодом (.), т.е.

java -cp .:./lib/mysql-connector-java-5.1.38-bin.jar Test 

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

  • Нет связанных вопросов^_^