Не найден подходящий драйвер для jdbc://localhost

У меня есть простой сервлет, развернутый на сервере Jetty 9 в Ubuntu 14.04. До вчерашнего дня все работало нормально. Но после сбоя системы у меня возникли проблемы с сервером MySQL, поэтому пришлось внести изменения в конфигурацию сервера MySQL, чтобы он работал, т.е. добавил строку socket = /tmp/mysql.sock по разделам [mysqld] а также [client] в my.cnf

Но теперь сервлет не работает. Это дает мне ошибку ниже.

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/slappdb
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at slappserver.RegisterServlet.doGet(RegisterServlet.java:74)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:738)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:551)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:568)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1111)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:478)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1045)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:199)
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:462)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:279)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:232)
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:534)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536)
    at java.lang.Thread.run(Unknown Source)

Я не внес никаких изменений в код сервлета:

final String DB_URL = DatabaseParameters.SlappDbURL;
final String USER = DatabaseParameters.DbServer_Username;
final String PASSWORD = DatabaseParameters.DbServer_Password;
conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);

Водитель находится в том же месте, что и раньше: /home/faizal/DEV/jre1.7.0_55/lib/ext/mysql-connector-java-5.0.8-bin.jar, который входит в путь сборки проекта.

Что могло пойти не так?

1 ответ

Решение

Похоже, что-то испортилось в моем проекте из-за сбоя. Теперь он работает после того, как я добавил строку Class.forName("com.mysql.jdbc.Driver"); в сервлете. Но эта строка на самом деле не требуется, так как я использую драйвер JDBC 4.

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

Другие вопросы по тегам