首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat 8- java.sql.SQLException:无法为连接URL创建类的JDBC驱动程序:mysql://xxx/myApp‘

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

Stack Overflow用户
提问于 2015-02-25 17:42:32
回答 3查看 31K关注 0票数 11

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

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

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

代码语言:javascript
复制
<?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>

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

代码语言:javascript
复制
<?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>

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

代码语言:javascript
复制
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
dataSource = (DataSource) envContext.lookup("jdbc/testdb");
...
connection = dataSource.getConnection();

但是在这一行中,当我试图从数据源获得一个连接时,我会得到以下异常:

代码语言:javascript
复制
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

我认为这可能是由于缺少JDBC驱动程序造成的,因此我插入了mysql-connector-java-5.1.34-bin.jar:

  1. pom.xml依赖
  2. Tomcat LIB文件夹
  3. webapp中的webapp/lib文件夹

但没有运气。

你能告诉我我做错了什么吗?我觉得好恶心..。:(

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-25 18:40:06

看起来你做得很好,所以:

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

将mysql-连接器-java-5.1.34-bin.jar(它必须有jar扩展才能在tomcat/lib中检测到(不要把它放在webapp路径上,它应该由tomcat类加载器加载)。

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

票数 4
EN

Stack Overflow用户

发布于 2017-12-26 23:16:05

修复Netbeans/Tomee/MySQL连接问题和解决上下文路径/RA7Web-1.0中部署的应用程序失败的步骤-快照,但上下文未能启动:

  1. 在Tomee服务器上使用appBase的完整路径名编辑appBase:
  2. 将以下内容添加到项目web-xml中: 资源分配数据库jdbc/resourcealloc javax.sql.DataSource容器
  3. 在Context.xml中添加以下内容:
  4. 生成了以下resources.xml,但我不得不编辑几个反斜杠,以便它与我的URL匹配: jdbcUrl=jdbc:mysql://localhost:3306/resourcealloc?zeroDateTimeBehavior=convertToNull jdbcDriver=com.mysql.jdbc.Driver password=mySecretPwd userName=root userName=root
票数 2
EN

Stack Overflow用户

发布于 2017-11-21 16:23:07

可能的问题是Tomcat在类加载期间多次遇到驱动程序jar。驱动程序jar只需要位于Tomcat目录下,而不需要位于web应用程序的WEB-INF/lib下。在这两个位置上都有驱动程序jar会给我带来奇怪的类加载问题,这表现在错误的形式上,表明“无法创建带有空类和空url的jdbc驱动程序”。有关不同数据库中的类似问题,请参见此答案:https://stackoverflow.com/a/11604084/2200690

更新:我不再从Eclipse内部启动Tomcat以确保Eclipse设置不会混淆(相反,我只是从bin目录启动Tomcat并从.Once远程调试.Once)--我做了这个更改,可以在within / lib和tomcat目录中使用驱动程序jar,这并不重要。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28725960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档