Как установить драйвер JDBC в веб-проекте Eclipse, не обращаясь к java.ленг.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.<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...
line и я не могу понять, почему! Вот что я сделал:--9-->
- загрузить mysql-connector.
- поместите его в мою папку MySQL
C:Program FilesMySQLmysql-connector-java-5.1.12mysql-connector-java-5.1.12-bin.jar
. - открыть свойства проекта в Eclipse.
- добавить внешние Jar в мой путь сборки и я выбрал
mysql-connector-java-5.1.12-bin.jar
.
каждый раз, когда я попытка использовать сервлет я получаю ту же ошибку, независимо от того, есть ли у меня jar там или нет. Не могли бы вы помочь мне разобраться в этом?
13 ответов
Что касается каждой" сторонней " библиотеки во вкусе файла JAR, который должен использоваться webapp, просто скопируйте/удалите физический файл JAR в webapp /WEB-INF/lib
. Затем он будет доступен в пути к классам по умолчанию webapp. Кроме того, Eclipse достаточно умен, чтобы заметить это. Нет необходимости возиться с buildpath. Однако обязательно удалите все ненужные ссылки, добавленные ранее, иначе они могут столкнуться.
альтернативой является установка его на сервере, путем удаления физического файла jar в собственном /lib
папка. Это необходимо, когда вы используете предоставленный сервером источник данных пула соединений JDBC, который, в свою очередь, нуждается в драйвере JDBC MySQL.
Читайте также:
- Как добавить библиотеки JAR в проект WAR, не сталкиваясь с java.ленг.ClassNotFoundException? Classpath vs Build Path vs / WEB-INF/lib
- Как подключиться к базе данных / источнику данных JDBC в сервлете на основе заявление?
- где я должен разместить драйвер JDBC для пула соединений Tomcat?
- JDBC CLASSPATH не работает
Так как вы запускаете его в servlet
, вам нужно иметь банку, доступную сервлет контейнер. Вы либо включаете соединитель как часть своего приложения war
или поместите его как часть расширенной библиотеки контейнера сервлета и материала управления источником данных, если он есть. Вторая часть полностью зависит от контейнера, который у вас есть.
остальные правы насчет фляги драйвера на ваш сервлет контейнер. Мой комментарий должен был предложить вам проверить из командной строки, является ли сам драйвер неповрежденным.
а не пустой 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 to C:\Program файлы\mysql\mysql server5.1/
затем укажите тот же путь, что и адрес, при определении драйвера в eclipse.
Это все очень просто ребята.
то, что вы не должны делать (особенно при работе над общим проектом)
хорошо, после того, как был тот же вопрос и после прочтения некоторых ответов здесь и в других местах. кажется, что поставив external lib
на WEB-INF/lib
это не такая хорошая идея, как это pollute webapp/JRE libs with server-specific libraries
-для получения дополнительной информации проверить этот ответ"
другое решение, которое я не рекомендую:чтобы скопировать его в папку tomcat/lib. хотя это может сработать, будет трудно управлять зависимость для общего проекта (например, git).
хорошее решение, 1
создать . положите туда всю свою внешнюю свободу. затем сопоставьте эту папку как зависимость с вашим проектом. в eclipse вам нужно
- добавить папку в
build path
-
Project Properties
->Java build path
-
Libraries
-> добавить внешний lib или любое другое решение для добавления файлов / папок
-
- добавить ваш путь сборки к
deployment Assembly
(ссылка)-
Project Properties
->Deployment Assembly
-
Add
->Java Build Path Entries
- теперь вы должны увидеть список библиотек на пути сборки, которые вы можете указать для включения в завершенную войну.
- выберите те, которые вы хотите, и нажмите Готово.
-
хорошее решение 2
использовать maven
(или любого другого) для управления зависимость проекта
Если проблема все еще сохраняется,
поставить- mysql-connector-java-5.0.8-bin jar в месте внутри вашей папки Tomcat->lib - >(независимо от того, где вы установили свой Tomcat). И измените переменную среды (сделано, щелкнув свойства Mycomputer-расширенные Системные настройки-переменные среды-и установите новое имя переменной и значения переменных в качестве места, где находится ваш файл lib.Не забудьте ввести ; в конце пути)
Если все-таки проблема упорствует Попробуйте загрузить commons-collections-2.0.Джар (http://www.docjar.com/jar_detail/commons-collections-2.0.jar.html) и вставьте банку в том же месте, где находится ваш MySQL jar (ie) внутри Tomcat-lib.
очистите свой проект-остановите сервер-наконец попробуйте запустить.
много раз я сталкивался с этой проблемой, я испытал ClassNotFoundException. если jar нет в физическом месте.
поэтому убедитесь .файл jar (MySQL connector) в физическом расположении папки lib WEB-INF. и убедитесь, что перезапуск Tomcat с помощью команды shutdown в cmd. это должно сработать.
единственное решение, которое сработало для меня, - это положить .файл jar под WEB-INF/lib . Надеюсь, это поможет.
предполагая, что ваш проект основан на maven, добавьте его в свой POM:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>
сохранить > построить > и снова протестировать соединение. Работает! Фактическая версия MySQL java connector может отличаться.
поставить mysql-connector-java-5.1.38-bin.jar to the C:\Program файлы\Apache Software Foundation\Tomcat 7.0\lib folder.by выполнение этой программы с помощью execute
Right click on the Project, go to Properties.
Choose Deployment Assembly (if not found, read the update part) from the left pane.
Check if Java Build Path Entries are provided.
If not, click on Add and include it. If it is already present, click Add to include your connector jar as Archive.
Do a Project>Clean, restart your Server.
этого об ошибке:
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
вам нужно:
Import java.sql.*;
Import com.mysql.jdbc.Driver;
даже если он не используется до запуска приложения.