UCanAccess 出现 ClassNotFoundException 和 NoClassDefFound 错误

Posted

技术标签:

【中文标题】UCanAccess 出现 ClassNotFoundException 和 NoClassDefFound 错误【英文标题】:ClassNotFoundException and NoClassDefFound errors with UCanAccess 【发布时间】:2014-05-23 20:20:37 【问题描述】:

Java 8 中不再包含 JDBC-ODBC 桥,所以我尝试了UCanAccess,但我遇到了麻烦。这是我的代码:

  package jdbc;
  import java.sql.*;

 public class jdbc  
 
    Connection con;
    Statement st;

    jdbc()
      
        try
        
            con=DriverManager.getConnection("jdbc:ucanaccess://P:/eclipseWorkspace/databases/signup.accdb");
        st=con.createStatement();

        st.executeUpdate("INSERT INTO signup (firstName,lastName,email,password)     VALUES ('rocky','balboa','rocky@gmail.com','pop')");
        System.out.println("SUCCESS");

    
    catch(Exception e)
    
        e.printStackTrace();
    
    




class main

     public static void main(String args[])
    
        new jdbc();
    

我已经包含了一些如图所示的外部罐子:

http://i.imgur.com/ujhPP0l.png?1

当我运行它时,它给了我一个带有 ClassNotFoundException 和 NoClassDefFound 错误的堆栈跟踪,如下所示:

http://i.imgur.com/UACP77k.png?1

我的代码有什么问题?

【问题讨论】:

请提及您收到的大量错误! Class.forName 不再受支持?文档说其他的。 错误显示在图片链接(最后一个)中。 当您解压 UCanAccess 发行版时,它会创建一个 lib/ 文件夹,其中包含所需依赖项的兼容版本。其中之一是commons-lang-2.6.jar,但我从您的屏幕截图中看到您正在使用commons-lang3-3.3.2.jar。尝试用 UCanAccess lib/ 文件夹中的 2.6 版本替换该版本,看看是否有帮助。 @Gord 我照你说的做了。现在我有新的错误。 net.ucanaccess.jdbc.UcanaccessSQLException: user lacks privilege or object not found: SIGNUP Olds were fixed ,所以谢谢。 【参考方案1】:

UCanAccess 有几个依赖项,其中之一是 commons-lang-2.x(2.4 或更高版本)。您在项目中使用 commons-lang3-3.3.2,因此 UCanAccess(实际上是 Jackcess)找不到 commons-lang-2.x 类。

当您解压缩 UCanAccess 发行版时,它会创建一个 lib/ 文件夹,其中包含所需依赖项的兼容版本。您需要将项目中的 commons-lang3-3.3.2.jar 引用替换为 UCanAccess lib/ 文件夹中的 commons-lang-2.6.jar

【讨论】:

以上是关于UCanAccess 出现 ClassNotFoundException 和 NoClassDefFound 错误的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 中的 UCanAccess 出现“给定文件不存在”错误

使用 ucanaccess 控制台出现错误:UCAExc:::3.0.2 用户缺少权限或找不到对象:DBO_TBLMATERIALS

UCanAccess 中的“语句意外结束”错误

UCANACCESS_HOME 系统变量

UCanAccess:找不到合适的驱动程序

Android Studio:net.ucanaccess.jdbc.UcanaccessSQLException:错误文件不存在