UCanAccess Initializer Error (compile/run without IDE)

前端 未结 1 1976
执念已碎
执念已碎 2020-12-02 02:48

I have been trying to create a new project to use UCanAccess to read a MS Access file. I have been following the information from @Gord Thompson and the example file in the

相关标签:
1条回答
  • 2020-12-02 03:28

    If you are not using an IDE then you need to specify the CLASSPATH entries for the JAR files of UCanAccess and all of its dependencies (HSQLDB, Jackcess, etc.). One way to do that is to use the -cp option of the java command when you run your code.

    For example, after I compile the following code in "UcaNoIde.java" ...

    import java.sql.*;
    
    public class UcaNoIde {
    
        public static void main(String[] args) {
            String dbFileSpec = "C:/Users/Public/UCanAccessTest.accdb";
            String connStr = "jdbc:ucanaccess://" + dbFileSpec;
            try (Connection conn = DriverManager.getConnection(connStr)) {
                System.out.println("Connection established.");
            } catch (Exception e) {
                e.printStackTrace(System.err);
            }
        }
    
    }
    

    ... into a "UcaNoIde.class" file I can run it using the following command at my Windows command prompt:

    java -cp .;C:/Users/Public/Downloads/UCanAccess/ucanaccess-3.0.3.jar;C:/Users/Public/Downloads/UCanAccess/lib/commons-lang-2.6.jar;C:/Users/Public/Downloads/UCanAccess/lib/commons-logging-1.1.1.jar;C:/Users/Public/Downloads/UCanAccess/lib/hsqldb.jar;C:/Users/Public/Downloads/UCanAccess/lib/jackcess-2.1.3.jar UcaNoIde
    

    (For Linux, et. al. the -cp entries will be separated by colons (:) instead of semicolons (;) and the file paths will be a bit different.)

    Another possibility is to define a CLASSPATH environment variable with the same entries as in the -cp option above so you don't have to use -cp every time.

    0 讨论(0)
提交回复
热议问题