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

Существует Очень похожий вопрос взорвать, но в моем случае у меня нет дублирующихся банок в моем пути сборки, таким образом, решение не работает на меня. Я искал 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.
"); Class.forName("com.mysql.jdbc.Driver").newInstance(); out.println("Get the connection.
"); connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "secret"); query = connection.prepareStatement( "SELECT * FROM customers"); //... } catch (Exception e) { out.println(e.toString()+"
"); } } //...

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

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

Это не заканчивает Class.forName... строка и я не можем выяснить почему! Вот то, что я сделал:

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

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

22
задан Community 23 May 2017 в 11:33
поделиться

3 ответа

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

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

См. Также:

53
ответ дан 29 November 2019 в 03:46
поделиться

Остальные правы в том, что делает 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

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

3
ответ дан 29 November 2019 в 03:46
поделиться

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

4
ответ дан 29 November 2019 в 03:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: