【发布时间】:2014-08-15 23:11:11
【问题描述】:
我正在尝试使用 UCanAccess 从 Mac OSX.8 中的 MS Access 数据库中读取数据。我相信我已经按照UCanAccess directions 和Gord Tompson in a StackOverflow answer 提供的设置了一切。这是我得到的错误:
线程“主”java.lang.IncompatibleClassChangeError 中的异常:找到 com.healthmarketscience.jackcess.Database 类,但需要接口
在 net.ucanaccess.jdbc.DBReference.(DBReference.java:149) 在 net.ucanaccess.jdbc.DBReferenceSingleton.loadReference(DBReferenceSingleton.java:57) 在 net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:100) 在 java.sql.DriverManager.getConnection(DriverManager.java:582) 在 java.sql.DriverManager.getConnection(DriverManager.java:207) 在 openACCDB.OpenACCDB.main(OpenACCDB.java:13)
我的构建路径包括以下内容:
commons-lang-2.6.jar commons-logging-1.1.1.jar hsqldb.jar jackcess-2.0.4.jar ucanaccess-2.0.8.jar 有人有建议吗?我的理解是 UCanAccess 和 Jackcess 是独立于平台的,但我还需要类似于 MS Jet Engine 的东西才能在 Mac OSX 中运行吗?这是我的代码:
package openACCDB
import java.sql.*;
import java.io.File;
public class OpenACCDB {
public static void main(String args[]) throws ClassNotFoundException,
SQLException {
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
String database = "/Users/george/Eclipse_Files/Java/GEOA_250/MyAccess.accdb";
if ((new File(database)).exists()) {
Connection conn = DriverManager.getConnection("jdbc:ucanaccess://"+database);
Statement stmt = conn.createStatement();
ResultSet rslt = stmt.executeQuery("SELECT [name] FROM [table1]");
while (rslt.next())
System.out.println(rslt.getString(1));
}
else System.out.println("The file "+database+"\n\tdoes not exist");
}
}
【问题讨论】:
标签: eclipse macos jdbc jackcess ucanaccess