Я не могу загрузить драйвер JDBC для MySQL

#java #mysql #jdbc

#java #mysql #jdbc

Вопрос:

Я пытался загрузить соединитель JDBC MySQL с помощью следующего кода:

 import java.sql.*;

public class dbTest{
   public static void main(String[] args) throws SQLException, ClassNotFoundException
   {
    Class.forName("com.mysql.jdbc.Driver"); 
   }
}
  

И я продолжаю получать исключение class not found:

 java.lang.ClassNotFoundException
    at edu.rice.cs.plt.reflect.PathClassLoader.findClass(PathClassLoader.java:148)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at dbTest.main(dbTest.java:6)
  

Я добавил путь к драйверу (mysql-connector-java-3.1.14-bin.jar ) к моему пути к классу и дважды проверил, чтобы убедиться, что он правильный. Я также добавил копии jar в папку ext моей установки Java на основе того, что я прочитал из этой статьи: http://www.developer.com/java/data/jdbc-and-mysql-installation-and-preparation-of-mysql.html

Я также просмотрел сообщения других пользователей, у которых была эта проблема, но во всех ответах до сих пор говорилось о необходимости добавить jar соединителя в classpath, что я уже сделал.

Буду признателен за любую помощь.

Ответ №1:

Я добавил путь к драйверу (mysql-connector-java-3.1.14-bin.jar ) к моему пути к классу

Исключение говорит вам, что вы сделали это неправильно.

Как вы настраиваете CLASSPATH? Если это переменная окружения, вы узнаете, что IDE и серверы приложений игнорируют ее. Не используйте его.

Также не помещайте его в каталог /ext вашего Java JDK.

Правильный способ сделать это зависит от того, как вы его используете:

  1. Если вы работаете в среде IDE, такой как Eclipse или IntelliJ, вам нужно добавить JAR в библиотеку.
  2. ЕСЛИ вы работаете в командной оболочке, используйте параметр -p для javac.exe когда вы компилируете и java.exe при запуске.
  3. Если вы используете его в веб-приложении, вы можете начать с размещения его в каталоге WEB-INF / lib вашего WAR-файла. Если вы используете движок servlet / JSP, такой как Tomcat 6, поместите его в каталог Tomcat / lib.

Комментарии:

1. Спасибо за ответ, я установил переменную CLASSPATH среды. Я использую Netbeans, и я добавил его в библиотеку, как вы сказали. Большое вам спасибо.

Ответ №2:

В IntelliJ вот как я решил эту проблему:

Файл> Структура проекта> Библиотеки >

Найдите соединитель jdbc. Для меня это было на C:UsersMyName .InteliJIdea13 config jdbc-drivers

Ответ №3:

В Java есть два пути к классам. Путь построения и запуска. Путь сборки используется при компиляции файлов .java в файлы .class. В таком языке, как C, у вас есть этап компоновки, который заполняет все недостающие символы при запуске компоновщика для множества объектных файлов. Вот почему для .exe (Windows) или других собственных двоичных файлов (Linux) нет пути запуска. Java немного отличается, потому что определения compiled .class загружаются jvm по мере необходимости.

В результате этого вам нужно указать путь к классу среды выполнения для jvm. В командной строке, которую вы используете java.exe который выполняет поиск в нескольких местах по умолчанию, включая $CLASSPATH, текущий каталог / библиотеку и все, что вы указываете в опции -cp.

IDE отличаются от командной строки, потому что они пытаются оградить вас от некоторых неприятностей, связанных с запуском java.exe и указать местоположения, в которых находятся все файлы .class (что было бы обременительно для большого проекта).

В большинстве IDE есть своего рода вкладка «Конфигурация запуска», которая позволяет вам указать определенные библиотеки или местоположения с классами, которые будут использоваться при запуске вашего приложения. Ниже показано, как задать путь запуска в eclipse, netbeans и intellij.

http://javahowto.blogspot.com/2006/06/set-classpath-in-eclipse-and-netbeans.html

http://www.jetbrains.com/idea/webhelp/run-debug-configuration-application.html