mysql - 调用 DriverManager.getConnection() 时出现意外的 java.lang.NoClassDefFoundError

标签 mysql jdbc

我正在编写一个Java应用程序,需要通过JDBC将一些数据插入MySQL数据库。相关代码如下:

public JDBCDecoder() {

    try {
        Class.forName("com.mysql.jdbc.Driver");
        System.out.println("Loaded MySQL JDBC driver");
    } catch (ClassNotFoundException e) {
        System.out.println("Exception attempting to load MySQL JDBC driver");
    }

    String url = "jdbc:mysql://localhost/db";

    Properties props = new Properties();
    props.put("user", "root");
    props.put("password", "root");

    try {
        conn = DriverManager.getConnection(url, props);
        conn.setAutoCommit(false);
    } catch (SQLException e) {
        Throwables.propagate(e);
    }
    ....

}

这是我尝试运行代码后得到的错误堆栈跟踪:

java.lang.NoClassDefFoundError: Could not initialize class oracle.jdbc.OracleDriver
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:249)
    at java.sql.DriverManager.getCallerClass(DriverManager.java:477)
    at java.sql.DriverManager.getConnection(DriverManager.java:576)
    at java.sql.DriverManager.getConnection(DriverManager.java:154)
    at exportclient.JDBCExportClient$JDBCDecoder.<init>(JDBCExportClient.java:179)
    at exportclient.JDBCExportClient.constructExportDecoder(JDBCExportClient.java:604)
    at export.processors.GuestProcessor$1.run(GuestProcessor.java:113)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at utils.CoreUtils$1$1.run(CoreUtils.java:259)
    at java.lang.Thread.run(Thread.java:680)

这对我来说很奇怪,因为:1)我没有尝试连接到 Oracle 数据库; 2)实际上我的类路径中有一个ojdbc6.jar(其中包含oracle.jdbc.OracleDriver)。所以我完全不知道为什么会发生这个错误。

任何建议将不胜感激。提前致谢!

最佳答案

关于mysql - 调用 DriverManager.getConnection() 时出现意外的 java.lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17496024/

相关文章:

mysql - sql 选择所有记录

mysql - SQL 中的多个结果处理

Java - 将文本文件读入数据库

java - 为什么对存储过程的 JDBC 调用会将调用括在大括号中?

java - JDBC 和 MySql 安装配置

java - 如何在 Java Springboot 中使用 jdbcTemplate 将整数数组插入到 postgresql 表中?

java - 如何使用数据库中的数据填充 ListView

mysql - 优化 mysql 日期查询

MySQL 查询基于表更新 mysql 中的列?

java - jdbc 可以通过 SOCKS 代理连接到 Oracle 数据库吗?