2009-10-18 3 views
30

Этот вопрос, возможно, задал здесь несколько раз. После выполнения какого-либо поиска в Google для указанной выше ошибки и выполнения некоторого обновления я не могу понять, почему я все еще получаю эту ошибку. Я уже положил driver-- MySQL-разъем-Java-5.1.5-бен в пути к классам:ClassNotFoundException com.mysql.jdbc.Driver

Java_Home\jre\lib\ 
Java_Home\jre\lib\ext\ 
Java_Home\lib 

и код, который я использую для подключения к базе данных MySQL является:

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

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

Statement stmt = con.createStatement(); 
ResultSet rs = stmt.executeQuery("select message_body from deadletter"); 
String dbtime; 
while (rs.next()) { 
dbtime = rs.getString(1); 
System.out.println(dbtime); 
} 

con.close(); 

} 
catch (SQLException e) { 
     System.out.println("Connection Failed! Check output console"); 
     e.printStackTrace(); 
     } 

    } 

и полный StackTrace вышеуказанного исключения является:

java.lang.ClassNotFoundException: com.mysql.jdbc:Driver 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:307) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252) 
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:169) 
    at mail.main(mail.java:114) 

Теперь, что это неправильно, я здесь делаю?

+1

Итак, что же делает ваш путь к классам выглядит? Вы должны поместить JAR-файл (mysql-connector-java-5.1.5-bin.jar) в путь к классам. – Jesper

+3

Сообщение об исключении имеет двоеточие в имени класса, которое, я считаю, не должно произойти. –

+0

«Класс.forName() 'была устаревшей с JDBC 4 в 2007 году, и независимо от того, какой MySQL Connector впервые ее реализовал. – EJP

ответ

22

Наиболее распространенной причиной является то, что у вас есть конфликт в том, где загружаются ваши классы. Например, если у вас есть 2 местоположения, а у одного есть JDBC-драйверы, а другой нет, то если ваш загрузчик классов загружается с 1-го места, а какой-то класс из 1-го места хочет использовать драйвер - драйвера там нет. Поэтому ищите дубликаты JAR, которые используют ваш драйвер.

+0

@Bostone Я думал, что драйвер отправился с [Apache James сам] (http://wiki.apache.org/james/V3ConfigTutorial). – Thufir

0

Я держу кувшин mysql-коннектора с моим проектом, а не в Javahome. В результате вы можете быть уверены, что его можно найти, убедившись в его локальном пути к классам. Большой потенциал заключается в том, что вы можете увеличить проект на другой машине и не беспокоиться о (или забыть), чтобы настроить его снова. Мне лично нравится включать его в контроль версий.

3

Что вы положили точно в lib, jre/lib или jre/lib/ext? Был ли это jar mysql-connector-java-5.1.5-bin.jar или что-то еще (например, каталог)?

Кстати, я бы не ставил его в lib, jre/lib или jre/lib/ext, есть и другие способы, чтобы добавить баночку пути к классам. Это можно сделать, добавив в него явную переменную среды CLASSPATH. Или вы можете использовать опцию -cpjava. Но это еще одна история.

7

У меня такая же проблема , но я нашел это после долгих поисков: http://www.herongyang.com/JDBC/MySQL-JDBC-Driver-Load-Class.html

Но я сделал некоторые изменения. Я поместил драйвер в ту же папку, что и мой файл ConTest.java, и скомпилировал его, в результате получилось ConTest.class.

Таким образом, в этой папке есть

ConTest.class 
mysql-connector-java-5.1.14-bin.jar 

и я пишу это

java -cp .;mysql-connector-java-5.1.14-bin.jar ConTest 

Таким образом, если вы не используете какой-либо IDE только CMD в окнах или оболочки в Linux.

+2

Для linux вам нужно будет заменить '; 'with': ' – Hassaan

+0

работать для меня! Большое вам спасибо, вы, ребята, спасите мои выходные! – weefwefwqg3

+0

Вы уверены, что это сработало? Это означает, что термин mysql-connector-java-5.1.14-bin.jar не распознается как имя командлета. – zygimantus

21

Я тоже боролся с той же проблемой и, наконец, получил решение для этого. Просто скопируйте MySql-Connector.jar в папку Tomcat lib, а затем удалите банку из папки webapp lib, а затем запустите проект.

+0

Это работает. Но я думаю, это нехорошее решение. Можете ли вы предложить более формальный способ? – Laksith

+0

Если вы используете какую-либо IDE, тогда «Server Clean» выполнит эту задачу. Если вы не используете IDE, вам нужно сделать это вручную. – Ruthreshwar

+0

Работает как очарование! – HelloIT

1

Хорошо, я нахожу решение, изменяющее путь mysql-conector-java.jar по следующему пути:

ProjectName/WebContent/Web-inf/lib/mysql-conector-java.jar 

Поэтому вам нужно добавить кондектор для повторного проекта и удалить предыдущий.

0

Хорошо. Могу ли я также внести свой вклад в мое решение. Щелкните правой кнопкой мыши на project -properties -> Развертывание сборки ... там вам нужно добавить mysql-connector-java.jar и применить его. ., который делает ваш prject настроенным с помощью веб-библиотек с этим соединителем sql ... Это сработало для меня .. Я надеюсь, что это сработает и для вас, ребята,

-1

Посмотрите на него, что аргумент класса. Метод forName - это «com. mysql. jdbc. Driver». Если да, то посмотрите, что разъем mysql присутствует в папке lib проекта. если да, то следите за тем, чтобы тот же самый соединитель mysql. баночка файл находится в переменной пути к классам (системная переменная) ..

+2

Без пробелов: «com.mysql.jdbc.Driver» – Eki

0

Единственное, что работал для меня был загрузив MySQL-разъем-Java-5.0.8-bin.jar непосредственно с веб-сайта MySQL:

http://dev.mysql.com/downloads/connector/j/3.1.html

Затем, если вы используете Eclipse, вставьте MySQL-разъем-Java-5.0.8-bin.jar в Lib папку WEB-INF

Если не работает попробуйте с любым решений, размещенных по этой ссылке: http://javarevisited.blogspot.com/2012/03/jdbc-javalangclassnotfoundexception.html

24

Если вы столкнулись с этой проблемой с Eclipse, я следовал много различных решений, но тот, который работал для меня это:

1) Щелкните правой кнопкой мыши папку проекта и откройте окно свойств.

2) С правой панели выберите Java Build Path, затем перейдите на вкладку «Библиотеки».

3) Выберите Добавить внешние JAR для импорта драйвера mysql.

4) С правой панели выберите узел развертывания.

5) Выберите Добавить ..., затем выберите Java Build Path Entries и нажмите «Далее».

6) Вы должны увидеть драйвер sql в списке. Выберите его и нажмите сначала.

И все! Попробуйте запустить его снова! Ура!

+4

Вы спасли моего человека дня (фактически неделю!). Из всех решений в Интернете это был тот, который мне нужен. Странные способы затмения: -> –

+0

СПАСИБО СМОТРЕТЬ! Я боролся с этой проблемой более двух часов, и это было решением проблемы. Искренне благодарю вас! –

+0

Это решение, которое сработало и для меня. В частности, шаги 4-6 являются дополнительными шагами, которые разрешили проблему подключения к базе данных, с которой я столкнулся. – JeremyCanfield

2

В среде NetBeans

  1. правой кнопкой мыши на библиотеки, выберите properties
  2. выберите rub вкладку
  3. там вам нужно добавить mysql-connector-java.jar и применять
0

Большая часть возможного решения имеет были рассмотрены выше. Из моего опыта этой проблемы я разместил mysql-connector-jar в папке/WEB-INF/lib модуля webapp, и он отлично работал для меня.

0

У меня была такая же ошибка после обновления моего java до 1.8.0_101.Попробуйте следующее: i. Удалите mysql.jar для вашего пути построения. ii. Очистить сервер и проект iii. Добавьте файл jar обратно в путь сборки.

Работал для меня.

0

Просто скопируйте файл JAR для диска JDBC MySQL и вставьте его в Tomcat или что-то другое в папку lib сервера. Меня устраивает.

2

1) Скачать разъем здесь https://www.mysql.com/products/connector/

2) драйвера Выберите JDBC для MySQL

3) нажмите на платформе Independent (зависит от архитектуры), ZIP архив

4) Загрузить файл и разархивировать это

5) (Для Eclipse) Щелкните Project-> properties-> Java Build Path-> Библиотеки (для Netbeans) щелкните правой кнопкой мыши библиотеки на левой панели-> добавить jar

6) Нажмите на Добавить внешнюю Jar

7) выберите MySQL-разъем-Java-5.1.40-bin.jar

8) Готово!

3

Если вы используете следовать NetBeans следующие шаги:

  1. правой кнопкой мыши на «Библиотеки» и выберите «Add Library ..»
  2. Прокрутите список «Глобальные библиотеки» и выберите «MySQL JDBC Driver 'и нажмите «Добавить библиотеку».
4

это анс для пользователя затмения ......

первого у проверить файл JDBC фляга добавить в библиотеках уха ....

если да ... то проверки ... в веб-Контент-> веб-Inf папке-> Lib

и прошлое здесь JDBC .jar файл в папку Lib .....

1

Вы должны скачать MariaDB connector.
Затем:

  1. Развернуть свой проект.
  2. Щелкните правой кнопкой мыши по адресу Libraries.
  3. Выберите Add Jar/Folder.
  4. Добавить mariadb-java-client-2.0.2.jar, который вы только что скачали.
1

В netbean правой кнопкой мыши на вашем проекте, то нажмите на библиотеки, а затем вкладку Run, добавить библиотеку, затем выберите MySQL Connector

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