线程“主”java.lang.NoClassDefFoundError 中的异常:org/apache/commons/lang/builder/CompareToBuilder
Posted
技术标签:
【中文标题】线程“主”java.lang.NoClassDefFoundError 中的异常:org/apache/commons/lang/builder/CompareToBuilder【英文标题】:Exception in thread "main" 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中。所以,我建议重建项目或更改公共语言和日志库的版本 【参考方案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 桥。以上是关于线程“主”java.lang.NoClassDefFoundError 中的异常:org/apache/commons/lang/builder/CompareToBuilder的主要内容,如果未能解决你的问题,请参考以下文章
Android 异步操作Android 线程切换 ( 判定当前线程是否是主线程 | 子线程中执行主线程方法 | 主线程中执行子线程方法 )