Tomcat 8 - java.sql.SQLException:无法为连接URL创建类''的JDBC驱动程序'jdbc:mysql:// xxx/myApp'

Bru*_*tus 10 mysql tomcat jdbc

我在网上到处寻找我的问题的解决方案,但我没有运气!:(

我正在尝试开发一个能够连接到MySQL数据库(连接池)并将其部署在Tomcat 8服务器上的servlet.

我在META-INF中有一个context.xml文件,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
   <Context antiJARLocking="true" path="/DBConnectionPoolTest">
       <Resource name="jdbc/testdb"
                 auth="Container"
                 type="javax.sql.DataSource"
                 username="xxx" password="xxx"
                 driverclassname="com.mysql.jdbc.Driver"
                 url="jdbc:mysql://xxx/myApp"
                 maxactive="10"
                 maxidle="4" />
   </Context>
Run Code Online (Sandbox Code Playgroud)

在WEB-INF中,我创建了web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">   
    <resource-ref>
        <description>DB Connection</description>
        <res-ref-name>jdbc/testdb</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
</web-app>
Run Code Online (Sandbox Code Playgroud)

最后,在servlet类中,我使用:

Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
dataSource = (DataSource) envContext.lookup("jdbc/testdb");
...
connection = dataSource.getConnection();
Run Code Online (Sandbox Code Playgroud)

但是在这一行上,当我尝试从数据源获取连接时,我得到以下异常:

java.sql.SQLException: Cannot create JDBC driver of class '' for connect URL 'jdbc:mysql://xxx/myApp'
t org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2065)
    at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:1939)
    at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1412)
    at DBPoolConnectionServlet.processRequest(DBPoolConnectionServlet.java:73)
...
Caused by: java.sql.SQLException: No suitable driver
Run Code Online (Sandbox Code Playgroud)

我认为这可能是由于缺少JDBC驱动程序引起的,所以我把它推mysql-connector-java-5.1.34-bin.jar入:

  1. pom.xml依赖
  2. Tomcat LIB文件夹
  3. webapp里面的WEB-INF/lib文件夹

但没有运气.

你能告诉我我做错了什么吗?我觉得这样的菜鸟...... :(

非常感谢您花时间阅读(并希望回答)我的问题!!!

Zie*_*elu 5

看起来你一切都很好,所以:

driverClassName="com.mysql.jdbc.Driver"(大写字母可能很重要)。

您放置 mysql-connector-java-5.1.34-bin.jar (它必须具有要在 tomcat/lib 中检测到的 jar 扩展名(不要将其放在您的 webapp 路径上,它应该由 tomcat 类加载器加载)。

如果它没有帮助,并且您正在从 IDE 启动您的 Web 应用程序。尝试启动 tomcat 表单控制台并手动部署您的应用程序。如果您安装了多个 tomcat,请确保 CATALINA_HOME 设置为您放置 mysql jar 的那个。