Как установить драйвер JDBC в веб-проект Eclipse, не сталкиваясь с java.lang.ClassNotFoundException

StackOverflow https://stackoverflow.com/questions/2353141

Вопрос

Есть ОЧЕНЬ похожий вопрос для моего, но в моем случае у меня нет дубликатов jar в моем пути сборки, поэтому решение для меня не работает.Я искал в Google уже пару часов, но ни одно из решений, которые я там нашел, на самом деле не решает мою проблему.Я создаю веб-сайт с некоторым подключением к базе данных для выполнения домашнего задания.Я использую базу данных MySQL, разрабатываемую в Eclipse и работающую в Windows.

Я продолжаю получать java.lang.ClassNotFoundException: com.mysql.jdbc.Driver со следующим кодом:

import java.sql.*;
//...
public void someMethodInMyServlet(PrintWriter out)
{
    Connection connection = null;
    PreparedStatement query = null;
    try {

        out.println("Create the driver instance.<br>");
        Class.forName("com.mysql.jdbc.Driver").newInstance();

        out.println("Get the connection.<br>");
        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "secret");
        query = connection.prepareStatement( "SELECT * FROM customers");

        //...
    } catch (Exception e)
    {
        out.println(e.toString()+"<br>");
    }
}
//...

Когда я запускаю приведенный выше код, я получаю следующий вывод:

Create the driver instance.
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

Это не проходит мимо Class.forName... очередь, и я не могу понять почему!Вот что я сделал:

  1. Скачайте mysql-connector.
  2. Поместите это в мою папку MySQL C:\Program Files\MySQL\mysql-connector-java-5.1.12\mysql-connector-java-5.1.12-bin.jar.
  3. Открыл свойства проекта в Eclipse.
  4. Добавьте Внешний Jar к моему пути сборки, и я выбрал mysql-connector-java-5.1.12-bin.jar.

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

Это было полезно?

Решение

Что касается каждой «сторонней» библиотеки в виде файла JAR, которая будет использоваться веб-приложением, просто скопируйте/перетащите физический файл JAR в папку веб-приложения. /WEB-INF/lib.Затем он будет доступен в пути к классам веб-приложения по умолчанию.Кроме того, Eclipse достаточно умен, чтобы это заметить.Не нужно возиться с buildpath.Однако обязательно удалите все ненужные ссылки, которые вы добавили ранее, иначе это может привести к коллизии.

Альтернативой является установка его на самом сервере, поместив физический файл JAR на собственный сервер. /lib папка.Это необходимо, когда вы используете источник данных пула соединений JDBC, предоставленный сервером, которому, в свою очередь, требуется драйвер MySQL JDBC.

Смотрите также:

Другие советы

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

Остальные правы в том, что JAR-файл драйвера доступен для вашего контейнера сервлетов.Мой комментарий был призван предложить вам проверить из командной строки, не поврежден ли сам драйвер.

Вместо пустого main(), попробуйте что-нибудь вроде этого, адаптированное из прилагаемой документации:

public class LoadDriver {
    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
    }
}

На моей платформе я бы сделал это:

$ ls mysql-connector-java-5.1.12-bin.jar 
mysql-connector-java-5.1.12-bin.jar
$ javac LoadDriver.java 
$ java -cp mysql-connector-java-5.1.12-bin.jar:. LoadDriver

На вашей платформе вам необходимо использовать ; в качестве разделителя путей, как обсуждалось здесь и здесь.

Поместите mysql-connector-java-5.1.6-bin.jar в папку \Apache Tomcat 6.0.18\lib.Ваша проблема будет решена.

Просто выполните следующие действия:

1) Установите eclipse
2) Импортируйте Apache в eclipse
3) Установите mysql
4) Загрузите mysqlconnector/J
5) Распакуйте архивированный файл, просматривайте его до тех пор, пока не найдете в нем файл bin.Затем поместите все файлы, которые присутствуют в папке, содержащей bin, в C:\Program Files\mysql\ mysql server5.1/ затем укажите тот же путь, что и адрес, при определении драйвера в eclipse.

Это все очень просто, ребята.

Чего не следует делать (особенно при работе над общим проектом)

Хорошо, после того, как возникла та же проблема и после прочтения некоторых ответов здесь и в других местах.кажется, что положить external lib в WEB-INF/lib это не такая уж хорошая идея pollute webapp/JRE libs with server-specific libraries - для получения дополнительной информации проверьте этот ответ"

Другое решение, которое я НЕ рекомендую: скопировать его в папку tomcat/lib.хотя это может сработать, будет сложно управлять зависимостями для общего проекта (например, git).

Хорошее решение 1

Создавать vendor папка.поместите туда все свои внешние библиотеки.затем сопоставьте эту папку как зависимость с вашим проектом.в затмении вам нужно

  1. добавьте свою папку в build path
    1. Project Properties -> Java build path
    2. Libraries -> добавить внешнюю библиотеку или любое другое решение для добавления файлов/папки
  2. добавьте свой путь сборки в deployment Assembly (ссылка)
    1. Project Properties -> Deployment Assembly
    2. Add -> Java Build Path Entries
    3. Теперь вы должны увидеть список библиотек на пути сборки, которые вы можете указать для включения в готовый WAR.
    4. Выберите те, которые вам нужны, и нажмите «Готово».

Хорошее решение 2

Использовать maven (или любая альтернатива) для управления зависимостью проекта

Если проблема все еще сохраняется,

Поместите файл- mysql-connector-java-5.0.8-bin в место внутри вашей Tomcat-> lib-> папки (независимо от того, где вы установили свой Tomcat).И измените переменную среды (для этого щелкните Свойства Mycomputer -Дополнительные системные настройки- Переменные среды) и задайте новое имя переменной и значения переменных в качестве места, где находится ваш lib-файл.Не забудьте ввести ;в конце пути)

Если проблема все еще не устранена Попробуйте загрузить commons-collections-2.0.jar (http://www.docjar.com/jar_detail/commons-collections-2.0.jar.html) и вставьте jar в то же место, где находится ваш mysql jar (т.е.) внутри Tomcat-lib.

Очистите свой проект-Остановите свой сервер - Наконец, попробуйте запустить.

Много раз я сталкивался с этой проблемой, я сталкивался с ClassNotFoundException.если jar не находится в физическом местоположении.

Поэтому убедитесь .файл jar (mysql connector) находится в физическом расположении папки WEB-INF lib.и обязательно перезапустите Tomcat, используя команду shutdown в cmd.это должно сработать.

Единственное решение, которое мне помогло, — это поместить файл .jar в WEB-INF/lib .Надеюсь, это поможет.

предполагая, что ваш проект основан на Maven, добавьте его в свой POM:

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.26</version>
    </dependency>

Сохраните > Создать > и снова проверьте соединение.Оно работает!Фактическая версия Java-коннектора MySQL может отличаться.

Поместите mysql-connector-java-5.1.38-bin.jar в папку C:\Program Files\Apache Software Foundation omcat 7.0\lib. Выполнив эту программу с помощью Execute

Моя проблема была немного в другом.Вместо jdbc:oracle:thin:@server:port/service у меня было это как server:port/service.

Пропало было jdbc:oracle:thin:@ в url атрибут в GlobalNamingResources.Resource.Но я упустил из виду исключение Tomcat

java.sql.SQLException: Cannot create JDBC driver of class 'oracle.jdbc.driver.OracleDriver' for connect URL 'server:port/service'

для этой ошибки:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

вам нужно:

Import java.sql.*;
Import com.mysql.jdbc.Driver;

даже если он не используется до запуска приложения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top