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
Android Studio:net.ucanaccess.jdbc.UcanaccessSQLException:错误文件不存在