【问题标题】:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/builder/CompareToBuilder线程“主”java.lang.NoClassDefFoundError 中的异常:org/apache/commons/lang/builder/CompareToBuilder
【发布时间】:2018-10-26 15:29:35
【问题描述】:
package myJavaPrograms;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class AccessDBFiles {
    public static void main(String[] args) throws SQLException  {
        Connection conn=DriverManager.getConnection(
                "jdbc:ucanaccess://C:\\TESTFILE\\Database11.accdb");
        Statement s = conn.createStatement();
        ResultSet rs = s.executeQuery("SELECT * FROM myTable");
        while (rs.next()) {
            System.out.println(rs.getString(1));
        }
    }

我在线程主线程中遇到异常作为线程“主”中的异常 java.lang.NoClassDefFoundError: org/apache/commons/lang/builder/CompareToBuilder

【问题讨论】:

  • 似乎找不到给定的课程。实际上它应该在commons lang中。所以,我建议重建项目或更改公共语言和日志库的版本

标签: java ms-access ucanaccess jackcess


【解决方案1】:

UCanAccess 使用 Jackcess,而 Jackcess 使用 commons-lang (v2.x),而不是 commons-lang3。 UCanAccess 所需的所有依赖项都包含在 UCanAccess 分发包(.bin.zip 文件)的 lib 文件夹中。

【讨论】:

    【解决方案2】:

    我看到您正在使用 UCanAccess,纯 JDBC 驱动程序。这种情况下你必须加载这个驱动:

    Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
    

    或者,您可以像这样加载 JDBC/ODBC 驱动程序类:

     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    

    这种情况,URL格式是这样的:

    jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=myDB.mdb;
    

    另外,不要忘记关闭资源:ResultSet、Statement 和 Connection。

    【讨论】:

    • “或者,您可以加载 JDBC/ODBC 驱动程序类”- 不适用于 Java 8。已删除 JDBC/ODBC 桥。
    猜你喜欢
    • 1970-01-01
    • 2013-03-19
    • 2017-08-13
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 2020-08-31
    • 2011-02-10
    相关资源
    最近更新 更多