2013-07-09 6 views
-1

Я написал программу для подключения к базе данных с использованием jdbc с подключением типа 4. Программа компилируется просто отлично, но дает исключение из java.lang.ClassNotFoundException: com.mysql.jdbc.Driver. Я извлек все папки в папке, в которой находится мой java-файл, и даже разместил все файлы jar и базу данных в одной папке. База данных содержит две записи с идентификаторами 1 и 2. В чем может быть проблема?Подключение JDBC типа 4 с использованием mysql

import java.sql.*; 

class TestJDBC { 

public static void main(String aa[]) { 

    try { 
     Class.forName("com.mysql.jdbc.Driver"); 

     Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/Student_Details", "root",""); 

     Statement stmt = con.createStatement(); 

     ResultSet rs = stmt.executeQuery("Select ID, studentname from Details where ID=1"); 

     while(rs.next()) { 
      System.out.print(rs.getString("ID")); 
      System.out.print("\t"); 
      System.out.println(rs.getString("StudentName")); 
     } 
    } 
    catch(Exception e) { 
     System.out.println(e); 
    } 
} 

}

ответ

3

Если файл mysql-connector-java-5.0.8-bin.jar находится с путем, как \lib\ в пределах вашего проекта, как показано ниже

enter image description here

Затем с ЦМДОМ стремительными (предполагается, что окна) изменить каталог в эту папку, то вам нужно будет скомпилировать ваш класс с

javac -cp ".;lib/mysql-connector-java-5.0.8-bin.jar" YourClass.java 

использования : если не окна (нужно только кавычки, если пробелы в именах файлов/папок)

затем запустить с

java -cp ".;lib/mysql-connector-java-5.0.8-bin.jar" YourClass 

Также убедитесь, что вы не имеете дублирующие банки в использовании

1

вам необходимо иметь банку, содержащую com.mysql.jdbc.Driver в пути класса

например

java -cp mysql.jar;. TestJDBC

где mysql.jar является флягу, содержащий файл класса

com/mysql/jdbc/Driver.class

на машине окна

размещены mysql-connector-java-5.0.8-bin.jar и TestJDBC.class в той же папке.

из папки выполнена java -cp mysql-connector-java-5.0.8-bin.jar;. TestJDBC

, который работал, как ожидалось.

Unix обычно требует

java -cp mysql-connector-java-5.0.8-bin.jar:. TestJDBC

+0

Пробовал, но все еще получает такое же исключение –

+0

вы используете язь? – BevynQ

+0

нет с помощью командной строки –

0

Как ответил BevynQ, устанавливая класс путь из командной строки задает путь (как, насколько мне известно) для конкретного текущего экземпляра ЦМД, если вы выйдете/закрыть и снова запустите команду, снова вам нужно установить путь. Я думаю, два решения для этого использовать фляги файлы в ваших программах:

  • раствор 1) Копирование фляга файлов в Program Files/Java/JRE/LIB папке, так что он будет доступен для времени выполнения среда, но это не рекомендуется добавлять файлы jar в JDK/JRE.

  • Решения 2) Установите переменный путь к классам, чтобы поместить полный путь вашего местоположения файла банка, так что он будет доступен для времени выполнения среды: Копировать полный путь вашего местоположения баночки файла, перейдите к переменному окружению , искать переменную classpath для пользователя/системы (пользовательская переменная для текущего пользователя входа, системная переменная для всех учетных записей пользователей в текущих окнах), если она есть, отредактируйте ее и введите свой путь в начало, в противном случае создайте новую переменную pathpath и поместите свой полный путь

Look here to set class-path-

+0

Вы не должны помещать файлы jar в свой JDK, чтобы получить ваш путь к классу. Это только для JDK-библиотек (и некоторых библиотек расширений). Также переменная среды CLASSSPATH почти никогда не используется «настоящими» Java-программами. Вы должны - в общем - игнорировать его существование. –

+0

@ Mark Rotteveel: Спасибо за хорошее предложение. Но, насколько я знаю, установив путь к классам, мы сообщаем java run time environment - где искать определенные файлы jar, связанные с API, для поиска классов и других ресурсов этого API. Пожалуйста, дайте мне знать, если я вводлю в заблуждение. –

+0

Да, для этого и предназначен путь classpath, но в общем случае переменная среды CLASSSPATH не используется для определения пути к классам приложения (например, при выполнении с помощью java -cp ... 'или' java -jar ... ', Java Webstart и т. Д.,' CLASSPATH' игнорируется) –

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