简体   繁体   English

Java:ucanaccess hsqldb java.lang.NoSuchMethodError:

[英]Java: ucanaccess hsqldb java.lang.NoSuchMethodError:

I downloaded and installed the uCanAccess jars by following instructions from here: Manipulating an Access database from Java without ODBC I'm learning how to use the microsoft access db for java and this is the coding I used 我从这里按照以下说明下载并安装了uCanAccess jar: 从Java无需ODBC操作Access数据库我正在学习如何为Java使用Microsoft Access数据库,这是我使用的编码

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

and when I run the java program, it comes with this error 当我运行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)

error is at this code: 错误是在此代码:

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

does it have something to do with the version of the hsqldb? 它与hsqldb的版本有关吗? because if it does I already tried downloading other versions of hsqldb and the same error appears 因为如果这样做,我已经尝试下载其他版本的hsqldb并出现相同的错误

here are the jars I'm using: 这是我正在使用的罐子:

ucanaccess-2.0.9.3.jar ucanaccess-2.0.9.3.jar

commons-lang-2.6.jar 公地郎2.6.jar

commons-logging-1.1.1.jar 共享记录-1.1.1.jar

hsqldb.jar 的hsqldb.jar

jackcess-2.0.8.jar jackcess-2.0.8.jar

so... how can I fix this? 所以...我该如何解决?

The answers in this thread suggest, that there are multiple hsqldb-versions on your classpath. 线程中的答案表明,您的类路径上有多个hsqldb版本。 Maybe one of the other involved jars contains hsqldb as well? 也许其他涉及的jar之一也包含hsqldb? You can inspect them using a zip tool of your choice, or the command jar -tf foo.jar . 您可以使用所选的zip工具或命令jar -tf foo.jar

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM