当前位置: 首页 > 知识库问答 >
问题:

将UCanAccess/jackcess用作MS Access数据库的JDBC时出现不兼容的ClassChangeError

阎英朗
2023-03-14

我正在尝试使用UCanAccess从Mac OSX中的MS Access数据库读取数据。8.我相信我已经按照UCanAccess说明和Gord Tompson在回答中提供的说明安排好了一切。这就是我得到的错误:

异常在线程"main"java.lang.不兼容ClassChangeError:找到类com.healthmarketscience.jackcess.数据库,但接口是预期的

      at net.ucanaccess.jdbc.DBReference.(DBReference.java:149)
      at net.ucanaccess.jdbc.DBReferenceSingleton.loadReference(DBReferenceSingleton.java:57)
      at net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:100)
      at java.sql.DriverManager.getConnection(DriverManager.java:582)
      at java.sql.DriverManager.getConnection(DriverManager.java:207)
      at 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

这是我的代码:

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");
    }
}

共有1个答案

卞琨
2023-03-14

在类路径(jackcess1.x.x)中,除了正确的jackcess版本com之外,似乎还有一个旧的、相互冲突的jackcess版本。健康市场科学。杰克塞斯。数据库是自jackcess2以来的一个接口。0.0. 你应该把jackcess1罐子拿走。

 类似资料:
  • 我必须将文件复制到本地机器还是完全不同的东西?如果我怎么做? (顺便说一句,我是一个windows用户。我只是在把我的应用程序转换到Mac上,如果我的行话用错了,很抱歉。)

  • 我已经从这个站点编译了一些AES实现代码,它应该执行128位密钥加密。我测试了可以正常工作的加密/解密程序。 然而,如果我用上面提到的代码加密任何东西,然后尝试用linux内置的openssl工具解密,我就是无法解密它,它甚至会记录错误的幻数错误。同样,如果我用openssl加密任何东西,并尝试用代码解密,那么就不会起作用。我试过两个cbc欧洲央行。 如果他们都在实施AES,它不应该以同样的方式工

  • 我正在使用ResideMenu作为我的主要项目中的一个库项目。我的应用程序因此异常而崩溃 "java.lang.NoSuchFieldError:类Lcom/特殊/Reside Menu/R$布局中没有类型I的静态字段residemenu_custom;或其超类(声明'com.special.Reside Menu。R$布局'出现在 /data/data/org.progos.creoroom/f

  • 问题内容: 我刚刚开始研究Rails,无法让服务器运行。我正在运行ruby 2.3.0和rails 4.2.5,并且在我有一个新的rail项目之后,我尝试运行但出现以下错误: 宝石清单说我有。我也尝试过重新安装rails并通过rvm更新我的ruby版本。知道有什么问题吗?我尝试过在网上四处看看,但是有点卡住了,尤其是因为我以前从未使用过滑轨,而只是使用了一点红宝石。 问题答案: 在您的红宝石环境中

  • 我试图使用NetBeans内置的数据库服务系统和UCanAccess JDBC驱动程序连接到MS Access数据库。在从service面板拖放表以将它们连接到Swing GUI中的JTables之后,一切似乎都正常工作,但是,当我试图运行该程序时,我会出现以下错误: 在查看了该错误之后,我认为这很可能是连接错误,但是在创建连接时没有显示任何错误,并且在services选项卡中,所有表都正确显示:

  • 扫描器输入=新扫描器(System.in); }