gpt4 book ai didi

java - 如何解析连接 URL 的 "Cannot create JDBC driver of class ' com.mysql.jdbc.Driver'

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:37:48 24 4
gpt4 key购买 nike

首先我想说我检查了stackoverflow上的所有答案,但我无法修复这个错误!请帮帮我!我花了很多时间,但没有结果。我正在尝试使用 Tomcat8 创建连接池。我有一个异常(exception):

java.sql.SQLException: Cannot create JDBC driver of class 'com.mysql.jdbc.Driver' for connect URL 'jdbc:mysql:/localhost:3306/autopark' at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2160) at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2032) at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1532) at ua.khpi.shapoval.db.DbConnector.init(DbConnector.java:31) at ua.khpi.shapoval.db.DbContextListner.contextInitialized(DbContextListner.java:48) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4842) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5303) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1407) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1397) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.sql.SQLException: No suitable driver at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2151) ... 13 more

DbConnector.class

public class DbConnector {
private static Logger log = Logger.getLogger(DbConnector.class.getName());
private static DataSource dataSource;
private static Connection connection;

public static void init() throws ServletException, SQLException, NamingException, ClassNotFoundException {

Context initCtx = new InitialContext();

Context envCtx = (Context) initCtx.lookup("java:comp/env/");

DataSource ds = (DataSource) envCtx.lookup("jdbc/autopark");
System.out.println(ds.getConnection());
}

public static Connection getConnection() throws SQLException {

return dataSource.getConnection();
}

}

context.xml 位于 META-INF 文件夹中

    <?xml version="1.0" encoding="UTF-8"?>
<Context crossContext="true" reloadable="true">
<Resource name="jdbc/autopark" auth="Container" type="javax.sql.DataSource"
username="root" password="161acid161" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql:/localhost:3306/autopark" maxActive="15" maxIdle="3" />
<ResourceLink name="jdbc/autopark" global="jdbc/autopark"

type="javax.sql.DataSource" />

</Context>

web.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>Autostation</display-name>
<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>


<resource-ref>

<description>Db</description>

<res-ref-name>jdbc/autopark</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>


<listener>
<listener-class>ua.khpi.shapoval.db.DbContextListner</listener-class>
</listener>
</web-app>

我的tomcat/lib 目录和我的项目结构的内容。 enter image description here

enter image description here

最佳答案

JDBC URL 不正确,确实您缺少一个斜杠,所以试试这个:

jdbc:mysql://localhost:3306/autopark

如果你仔细检查,真正的错误是没有合适的驱动程序,这意味着它找不到任何支持提供的 URL 的 JDBC 驱动程序。

关于java - 如何解析连接 URL 的 "Cannot create JDBC driver of class ' com.mysql.jdbc.Driver',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38774282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com