Не удается подключиться к MySQL через сервлет - PullRequest
1 голос
/ 29 января 2011

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

У меня установлен и работает MySQL и Eclipse.

Всякий раз, когда я пытаюсь установить соединение, я получаю ClassNotFoundException для com.mysql.jdbc.Driver, который на самом деле правильно импортируется. Разъем, который я использую, - это mysql-connector-java5.1.14, добавленный в качестве внешней банки, поэтому все выглядит нормально. Вот мой код:

 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

  String dbUrl="jdbc:mysql://localhost:3306/test";
  String username="root";
  String password="";



  try {
   Class.forName("com.mysql.jdbc.Driver").newInstance();
   conn=DriverManager.getConnection(dbUrl);
   System.out.println("Connected!");

  } catch (SQLException e) {
   e.printStackTrace();
   System.out.println("not connected");

  } catch(ClassNotFoundException x){
   x.printStackTrace();

  } catch(Exception e){

   e.printStackTrace();
  }


 }

Вот часть трассировки стека:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
 at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:375)
 at java.lang.Class.forName0(Native Method)
 at java.lang.Class.forName(Class.java:164)

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

В обычном приложении, которое не запускается на сервере, исключение не генерируется, и соединение (точно так же) успешно устанавливается.

У вас есть какой-нибудь совет?

Ответы [ 2 ]

3 голосов
/ 29 января 2011

Поместите mysql-connector-x.jar в WEB-INF/lib

1 голос
/ 29 января 2011

Два возможных решения:

1) Когда вы создаете WAR, этот драйвер находится внутри?Вы можете разархивировать его (переименуйте файл .war в .zip и просто посмотрите - он должен быть в / WEB-INF / lib.) Eclipse может не экспортировать его в WAR.

2)Вы положили его в каталог lib Tomcat, если вы используете Tomcat?Если нет, то в каком контейнере сервлета вы развертываете?

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

...