微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尽管添加了驱动程序的 JAR 文件,但 JDBC 程序中的 ClassNotFoundException

如何解决尽管添加了驱动程序的 JAR 文件,但 JDBC 程序中的 ClassNotFoundException

我正在用 Java 编写一个简单的程序,用于演示使用 JDBC 在 MysqL 表中插入数据。但是程序在注册驱动程序时产生ClassNotFoundException。

import java.sql.*;

public class test {
    public static void main(String[] args) {
        try {
            Class.forName("com.MysqL.jdbc.Driver");
        }
        catch(ClassNotFoundException e) {
            System.out.println("ClassNotFoundException: "+e.getMessage());
        }
    }    
}

我已经在同一个目录中添加了驱动程序 JAR 文件

编译程序:

javac -cp ".:~/Programs/D/friends/assignment/driver.jar;" test.java

执行程序:

java -cp ".:~/Programs/D/friends/assignment/driver.jar;" test

O/p:

ClassNotFoundException: com.MysqL.jdbc.Driver

enter image description here

解决方法

注意:该问题是由 ; 在 driver.jar 的末尾并且未使用完全限定路径引起的。

基于Windows 的操作系统 使用; 分隔符,而基于Unix 的操作系统 使用: 分隔符。

解决方案:

  1. 首先编译代码:javac test.java(运行这个命令)

  2. 运行不带分号的代码:java -cp .:<fully-qualified-path>/driver.jar test

示例输出:

anish@Anishs-MacBook-Pro ~ % javac Test.java
anish@Anishs-MacBook-Pro ~ % java -cp .:/Users/anish/driver.jar Test  
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

注意:我正在使用 mysql-connector-8.0.15.jar。如果您使用相同或更高版本,则从 com.mysql.jdbc.Driver 更改为 com.mysql.cj.jdbc.Driver,因为该类已被弃用。

,

1.在类路径的末尾似乎有一个额外的分号:
/assignment/driver.jar;"
不用它试试

2. 您确定 driver.jar 是正确的文件吗?
通常它们被称为 mysql-connector-java-8.0.23.jar

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。