无法载入com.mysql.jdbc.Driver驱动程序! 无法连接数据库!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法载入com.mysql.jdbc.Driver驱动程序! 无法连接数据库!相关的知识,希望对你有一定的参考价值。

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1352)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198)
at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:127)
at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:65)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.apache.jsp.testjdbc_jsp._jspService(org.apache.jsp.testjdbc_jsp:54)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)

我用的是mysql-connector-java-5.0.5-bin.jar
各种路径我都设置过了,但是还有老是出错,都奔溃了。两天了,这个问题还是没办法解决,请各位帮忙

驱动没有放对.
在%JAVA_HOME%\目录下建立mysqlforjdbc子目录,进入该目录将mysql-connector-java-3.1.10-bin.jar到该目录下

在%JAVA_HOME%\lib目录,将mysql-connector-java-3.1.10-bin-g.jar拷贝到该目录下

然后配置classpath,追加%JAVA_HOME%\lib\mysql-connector-java-5.0.5-bin.jar ;%JAVA_HOME%\mysqlforjdbc\mysql-connector-java-5.0.5-bin.jar ;

另外,server/all/lib,如果你用的不是all,在server/default/lib中也放一份试试

参考资料:http://bbs.mysql.cn/thread-1235-1-1.html

参考技术A 随便一本jsp的书,都有简单介绍与MYSQL的连接的.
以下是jsp连接数据库的例子.
<%@ page language="java" contentType="text/html; charset=GB2312" pageEncoding="GB2312"%>
<%@ page import="java.util.*" %>
<%@ page import="java.sql.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
<title>创建数据库</title>
</head>
<body ><font size=2>
<%
//连接需要的对象
Connection conn = null;
Statement stmt = null;
String sql = null;
ResultSet rs = null;
int ret;
try
/*请确认已经安装mysql服务器,并且用户名root,密码为root*/
Class.forName("com.mysql.jdbc.Driver"); //载入JDBC驱动程序
String strCon = "jdbc:mysql://localhost:3306/"; //连接字
conn = DriverManager.getConnection(strCon,"root","root"); //连接数据库
stmt = conn.createStatement(); //初始化查询
sql = "create database JspSamples"; //创建数据库
ret = stmt.executeUpdate(sql); //执行创建数据库
sql = "use JspSamples"; //选择数据库
ret = stmt.executeUpdate(sql); //执行选择数据库
sql = " CREATE TABLE customers(" + //创建表
" Id int(6) unsigned NOT NULL auto_increment," +
" Name varchar(20) default NULL," +
" addTime timestamp NULL default NULL," +
" Tel varchar(15) default NULL," +
" Email varchar(20) default NULL," +
" PRIMARY KEY (Id)" +
" )";
ret = stmt.executeUpdate(sql); //执行创建表


catch(ClassNotFoundException e) //意外处理,驱动程序无法找到
e.printStackTrace();
out.println("<h1>无法找到数据库驱动</h1>");

catch(SQLException e1) //意外处理,数据库操作失败
e1.printStackTrace();
out.println("<h1>数据库操作失败</h1>");


out.println("<h1>新建数据库JspSamples成功</h1>");
DatabaseMetaData meta = conn.getMetaData(); //获取数据库信息
out.println("<br>");
out.println("连接字:" + meta.getURL()); //获取连接字
out.println("<br>");
out.println("数据库产品:" + meta.getDatabaseProductName()); //获取数据库产品名
out.println("<br>");
out.println("数据库版本:" + meta.getDatabaseProductVersion() ); //获取数据库产品版本
out.println("<br>");
out.println("驱动程序:" + meta.getDriverName() ); //获取数据库驱动名
out.println("<br>");
out.println("驱动程序版本:" + meta.getDriverVersion() ); //获取数据库驱动版本

stmt.close(); //关闭查询
conn.close(); //关闭连接
%>
</font>
</body>
</html>

LibreOffice:无法加载“com.mysql.jdbc.driver”

【中文标题】LibreOffice:无法加载“com.mysql.jdbc.driver”【英文标题】:LibreOffice: 'com.mysql.jdbc.driver' cannot be loaded 【发布时间】:2015-01-22 00:47:48 【问题描述】:

我正在尝试通过 JDBC 连接在 phpMyAdmin 中将 LibreOffice Base 与 MySQL 数据库连接。

第一步是选择你要选择的数据库:

第二步,选择哪个连接:

第三步,选择你的数据库:

当我按下“Klasse testen”(测试类)时,出现以下错误:“com.mysql.jdbc.driver 无法加载”。

有谁知道如何避免这个错误?

【问题讨论】:

在您选择连接的第一个屏幕中(而不是创建或打开),您还可以选择“JDBC”而不是“MySQL”。或者在第二个屏幕中,我现在可以(在我安装了 JDBC 连接器之后)“直接连接”。所以似乎有几种方法可以使用 JDBC。我不确定有什么区别,只是这有点复杂。 @Elipticalview 感谢提及:) 【参考方案1】:

您需要先下载并“注册”JDBC 连接器。这样做:

    转到http://dev.mysql.com/downloads/connector/j/ 并使用 JDBC 连接器(“平台无关”)下载 ZIP 存档;您也可以下载 MSI 安装程序;在这种情况下,jar文件可以在Program Files (x86)/MySQL/MySQL Connector J/中找到(假设是Win 7 64位系统)

    在本地 PC 上解压缩存档(记住其内容的路径),或者安装 MSI 文件;

    在提取的文件夹结构中,有一个文件“mysql-connector-java-5.0.8-bin.jar”(名称取决于您下载的确切版本)

    运行 LibreOffice(不是 Base,只是 LO);

    打开菜单Tools -> Options -> LibreOffice -> Advanced -> 类路径;

    点击添加存档

    从步骤 1-3 中选择 jar 文件并点击 OK。现在,Class Path对话框应如下所示:

就是这样。现在,LO 知道在哪里可以找到 MySQL JDBC 驱动程序。

【讨论】:

对于 Ubuntu 用户,您可以 sudo apt-get install libmysql-java 然后将类路径设置为 /usr/share/java/mysql.jar 可以使用 dpkg 验证 jar 文件的路径 - L libmysql-java 注意:您可以从任何 LO 应用程序访问工具 -> 选项 -> 高级,例如Writer 或 Calc 以添加新的类路径 您也可以从基本应用中打开选项 :-)【参考方案2】:

按照上述说明并成功连接到所需的 MySQL 数据库后,我发现在 DateTime 字段中包含 0000-00-00 00:00:00 的表生成错误 'Value 0000-00-00 00 :00:00' 无法加载为 java.sql.Timestamp。找到对“zeroDateTimeBehavior=convertToNull”的引用作为解决方案很容易;棘手的部分是 在 LibreOffice 中输入的位置。快速回答:将其作为 数据库名称 字段的一部分输入 - 因此“mydatabase”将变为“mydatabase?zeroDateTimeBehavior=convertToNull”。在带有 localhost 服务器的 Linux Mint / Ubuntu 下运行,这创造了奇迹。快乐的数据处理!

【讨论】:

这本身就值得进行问答 - 但感谢您添加此信息!【参考方案3】:

如果您使用像 Fedora 这样的 Linux 发行版这样的 Red Hat,您可以使用 yum 或 dnf 从存储库安装它,然后:

在 Base goto Tools/Options/Java 中,单击 Classpath 并在文件浏览器中选择 /usr/share/java/mysql-connector-java.jar。

https://fedoraproject.org/wiki/QA:Testcase_MySQL_or_MariaDB_in_libreoffice-base

【讨论】:

【参考方案4】:

顺便说一句,对于 Mariadb 其他一切都是一样的,但是 jdbc 驱动程序类更改为:

org.mariadb.jdbc.Driver

【讨论】:

@Wilcar,您必须拥有 /usr/share/java/mariadb-java-client-2.2.6.jar(或更新版本)并设置用户所有权和 -rw-r-----烫发。同样在 LO Options LibreOffice Advanced 中打开 Class Path... 并将其指向此文件,即 Add Archive... 。顺便说一句,您可以使用归档管理器打开此 jar,然后向下钻取以在其中找到 Driver.class,即 ..org/mariadb/jdbc/Driver.class 好的,终于对我有用了。我使用 mariadb-java-client-2.4.0.jar 而不是 mariadb-java-client-2.4.0-javadoc.jar【参考方案5】:

就我而言(Windows 和 Linux),问题在于 JRE / JDK 和 LibreOffice 的组合。

它与 LibreOffice-7.0.3.1、JRE-1.0.8.281、mysql-connector-java-8.0.18.jar 一起使用。当我升级到LibreOffice-7.2JRE-1.0.8.301 时,JDBC 驱动程序无法加载

所以我切换到 LibreOffice-7.0.5.1 和 JRE-1.0.8.281,看起来还不错。我没有尝试过更新版本的 JRE(282 到 300)。

在 LibreOffice,他们提供 7.2、7.1 和 7.0 版本。

因此它适用于 Win-32 位和 64 位 LibreOffice-7.0.5.1(32 位,最新 7.0 系列)、JRE-1.8.0.281(32 位非最新)和 mysql-connector-java-8.0 .26.jar(最新)。我想问题出在 mysql-connector-java-8.0-26.jar 上。也许它需要用最新的 JDK 重新编译?我试过了,但我没有时间安装依赖项。

使用 Linux 64 位,它适用于:LO-6.2.8.2、JDK-1.0.8.261、mysql-java-connector-8.0.18.jar(懒得升级所有这些)。尝试使用 JDK-1.0.8.301 = KABOOM!

【讨论】:

以上是关于无法载入com.mysql.jdbc.Driver驱动程序! 无法连接数据库!的主要内容,如果未能解决你的问题,请参考以下文章

JDBC

无法加载 JDBC 驱动程序类“com.mysql.jdbc.Driver”Tomcat 8 和 Eclipse

如何解决“无法为连接 URL 创建类 'com.mysql.jdbc.Driver' 的 JDBC 驱动程序”

无法在 ipython 中正确创建 spark 上下文以链接到 MySQL - com.mysql.jdbc.Driver

从 2.6 升级到 3.7 时,BIRT JDBCException“无法加载 JDBC 驱动程序类:com.mysql.jdbc.Driver”

无法加载驱动程序类:com.mysql.jdbc.Driver 与 Gradle 和 Spring Boot