Java: ucanaccess hsqldb java.lang.NoSuchMethodError:

Я загрузил и установил jar-файлы uCanAccess, следуя инструкциям здесь: база данных с Java без ODBC Я изучаю, как использовать базу данных Microsoft Access для Java, и это код, который я использовал

package Main.Net;

import java.sql.*;


public class DataBase {

    Connection con;
    Statement st;
    ResultSet rs;



    public DataBase() {

    }

    private void connect() {

        try {
            //String driver = "sun.jdbc.odbc.jdbcodbcdriver";
            //Class.forName(driver);

            String db = "jdbc:ucanaccess://C:/Users/MyUser/workspace/Connectors_DB.accdb";
            con = DriverManager.getConnection(db);
            st = con.createStatement();
            String sql = "select * from Table";
            rs = st.executeQuery(sql);

            while(rs.next()) {

                String username = rs.getString("Username");
                String password = rs.getString("Password");

                System.out.println(username + "\t" + password);
            }

        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        new DataBase().connect();
    }
}

и когда я запускаю программу Java, она приходит с этой ошибкой

Exception in thread "main" java.lang.NoSuchMethodError: org.hsqldb.DatabaseURL.parseURL(Ljava/lang/String;ZZ)Lorg/hsqldb/persist/HsqlProperties;
at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source)
at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at net.ucanaccess.jdbc.DBReference.getHSQLDBConnection(DBReference.java:354)
at net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:206)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at Main.Net.DataBase.connect(DataBase.java:23)
at Main.Net.DataBase.main(DataBase.java:42)

ошибка в этом коде:

String db = "jdbc:ucanaccess://C:/Users/MyUser/workspace/Connectors_DB.accdb";
con = DriverManager.getConnection(db);

это как-то связано с версией hsqldb? потому что, если это так, я уже пробовал загружать другие версии hsqldb, и появляется та же ошибка

вот банки, которые я использую:

ucanaccess-2.0.9.3.jar

Commons-lang-2.6.jar

Commons-регистрация-1.1.1.jar

hsqldb.jar

jackcess-2.0.8.jar

так... как я могу это исправить?


person Recto7299    schedule 05.02.2015    source источник
comment
Что ж, непосредственная причина ошибки очевидна. Что касается того, как может произойти такая ситуация, существует несколько механизмов, но наиболее распространенным из них является несоответствие JAR-файлов.   -  person Hot Licks    schedule 05.02.2015


Ответы (1)


Ответы в эта тема предполагает, что в вашем пути к классам есть несколько версий hsqldb. Может быть, одна из других задействованных банок также содержит hsqldb? Вы можете просмотреть их с помощью инструмента zip по вашему выбору или команды jar -tf foo.jar.

person martin    schedule 06.02.2015