Java UCanAccess中的ClassNotFoundException和NoClassDefFound错误
Java8中不再包含JDBC-ODBC桥,所以我尝试了,但我遇到了问题。这是我的密码:Java UCanAccess中的ClassNotFoundException和NoClassDefFound错误,java,ms-access,jdbc,ucanaccess,Java,Ms Access,Jdbc,Ucanaccess,Java8中不再包含JDBC-ODBC桥,所以我尝试了,但我遇到了问题。这是我的密码: package jdbc; import java.sql.*; public class jdbc { Connection con; Statement st; jdbc() { try { con=DriverManager.getConnection("jdbc:ucanaccess://P
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();
}
}
我包括了一些外部罐子,如图所示:
当我运行它时,它会给我一个包含ClassNotFoundException和NoClassDefFound错误的堆栈跟踪,如下所示:
我的代码有什么问题?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
引用替换为UCanAccesslib/
文件夹中的commons-lang-2.6.jar
。请提及您收到的大量错误!不再支持?文档中说了一些其他的错误。错误显示在图像链接(最后一个)中。当您解压缩UCanAccess发行版时,它创建了一个lib/
文件夹,其中包含所需依赖项的兼容版本。其中之一是commons-lang-2.6.jar
,但我从您的屏幕截图中看到您正在使用commons-lang3-3.3.2.jar
。试着用UCanAccesslib/
文件夹中的2.6版本替换那个版本,看看是否有帮助。@Gord我照你说的做了。现在我有了新的错误。net.ucanaccess.jdbc.UcanaccessSQLException:用户缺少权限或找不到对象:注册旧的已修复,谢谢。