Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tomcat 8-java.sql.SQLException:无法创建类'';用于连接URL';jdbc:mysql://xxx/myApp'_Mysql_Tomcat_Jdbc - Fatal编程技术网

Tomcat 8-java.sql.SQLException:无法创建类'';用于连接URL';jdbc:mysql://xxx/myApp'

Tomcat 8-java.sql.SQLException:无法创建类'';用于连接URL';jdbc:mysql://xxx/myApp',mysql,tomcat,jdbc,Mysql,Tomcat,Jdbc,为了找到解决问题的办法,我在网上到处找,但我没有运气( 我正在尝试开发一个能够连接到MySQL数据库(连接池)并将其部署到Tomcat8服务器上的servlet 我在META-INF中有一个context.xml文件,如下所示: <?xml version="1.0" encoding="UTF-8"?> <Context antiJARLocking="true" path="/DBConnectionPoolTest"> <Resource

为了找到解决问题的办法,我在网上到处找,但我没有运气(

我正在尝试开发一个能够连接到MySQL数据库(连接池)并将其部署到Tomcat8服务器上的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>
但在这一行中,当我尝试从数据源获取连接时,我得到以下异常:

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放入:

  • pom.xml依赖关系
  • Tomcat库文件夹
  • webapp中的WEB-INF/lib文件夹
  • 但是没有运气

    你能告诉我我做错了什么吗?我觉得很难受(


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

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

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

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


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

    可能的问题是tomcat在类加载过程中多次遇到驱动程序jar驱动程序jar只需要位于Tomcat lib目录下,而不需要位于WEB应用程序的
    WEB-INF/lib
    下。在这两个位置都有驱动程序jar会导致奇怪的类加载问题,这表现为错误提示“无法创建类为空且url为空的jdbc驱动程序”。有关其他数据库中的类似问题,请参见此答案:


    更新:我不再从Eclipse中启动Tomcat,以确保Eclipse和Tomcat设置不会混淆(而是从bin目录启动Tomcat,并从Eclipse远程调试jvm)。一旦我做了此更改,我就可以在Web INF/lib和Tomcat lib目录中都有驱动程序jar,这无关紧要。

    修复Netbeans/Tomee/MySQL连接问题并解决失败的步骤-在上下文路径/RA7Web-1.0-SNAPSHOT部署应用程序,但上下文无法启动:

  • 使用appBase的完整路径名在Tomee服务器上编辑server.xml:

     <!-- Fixed the problem of cannot deploy by providing a full path  for appBase -->`
     <Host name="localhost"  
           appBase="C:\apache\apache-tomee-7.0.2-plume\webapps"
           unpackWARs="true" autoDeploy="true">
    
    `
    
  • 将以下内容添加到project web xml中:

    <resource-ref>
        <description>Resource Allocation database</description>
        <res-ref-name>jdbc/resourcealloc</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
    
    
    资源分配数据库
    jdbc/resourcealloc
    javax.sql.DataSource
    容器
    
  • 将以下内容添加到Context.xml中:

      <Resource name="jdbc/resourcealloc"
            auth="Container"
            type="javax.sql.DataSource"
            username="root"
            password="mySecretPwd"
            driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/resourcealloc"
            maxActive="15"
            maxIdle="3"/>
    
    
    
  • 生成了以下resources.xml,但我必须编辑几个斜杠,使其与我的URL匹配:

      <resources>
          <Resource id="jdbc/resourcealloc" type="javax.sql.DataSource">
              jdbcDriver=com.mysql.jdbc.Driver
              password=mySecretPwd
              userName=root
              jdbcUrl=jdbc:mysql://localhost:3306/resourcealloc?zeroDateTimeBehavior=convertToNull
          </Resource>
      </resources>
    
    
    jdbcDriver=com.mysql.jdbc.Driver
    密码=mySecretPwd
    用户名=根
    jdbcUrl=jdbc:mysql://localhost:3306/resourcealloc?zeroDateTimeBehavior=convertToNull
    

  • 您说您将JDBC驱动程序bin放入Tomcat LIB文件夹中,是JDBC.jar文件吗?是的,很抱歉,我在复制和粘贴过程中错过了扩展名,它是一个jar文件。我尝试了手动部署,但结果是一样的。在任何情况下,深入查看stacktrace时,我注意到以下错误:
    由:java.sql.SQLException引起:没有合适的驱动程序,非常感谢!!!你以某种方式解决了我的问题!!!:D在查找
    没有合适的驱动程序
    异常后,我发现了这个问题:特别是这个答案:出于某种原因,我需要调用
    Class.forName(“com.mysql.jdbc.driver”);
    ,即使我不应该!!!:)每次需要连接时都必须调用Class.forName吗?@RTF不,我想在任何连接之前只需要调用一次!
      <Resource name="jdbc/resourcealloc"
            auth="Container"
            type="javax.sql.DataSource"
            username="root"
            password="mySecretPwd"
            driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/resourcealloc"
            maxActive="15"
            maxIdle="3"/>
    
      <resources>
          <Resource id="jdbc/resourcealloc" type="javax.sql.DataSource">
              jdbcDriver=com.mysql.jdbc.Driver
              password=mySecretPwd
              userName=root
              jdbcUrl=jdbc:mysql://localhost:3306/resourcealloc?zeroDateTimeBehavior=convertToNull
          </Resource>
      </resources>