Which JAR files are required for SchemaCrawler?

半世苍凉 提交于 2019-12-25 11:58:50

问题


I'm using Eclipse, SQLite database and Hibernate. I want to use SchemaCrawler in my project, already have sqlite-jdbc library. My aim is to compare using SchemaCrawler structure of two databases. But I can't even connect to my first database. I am using this code:

public class SchemaConroller {

    public SchemaConroller() {

        SchemaCrawlerOptions options = new SchemaCrawlerOptions();
        options.setSchemaInfoLevel(SchemaInfoLevelBuilder.standard());


        try {
            Connection conn = getConnection();
            Catalog catalog = SchemaCrawlerUtility.getCatalog(conn, options);
            for (Schema schema : catalog.getSchemas()) {
                System.out.println(schema);
                for (Table table : catalog.getTables(schema)) {
                    System.out.print("o--> " + table);
                    for (Column column : table.getColumns()) {
                        System.out.println("     o--> " + column);
                    }
                }
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    private static Connection getConnection() throws SchemaCrawlerException, SQLException, ClassNotFoundException {
        String dbPath = "src/home/accounting/DB/myDatabase.sqlite";
        Class.forName("org.sqlite.JDBC");
        Connection c = DriverManager.getConnection("jdbc:sqlite:" + dbPath);
        return c;
    }
}

I always get error:

Oct 12, 2017 1:31:50 PM schemacrawler.utility.SchemaCrawlerUtility matchDatabaseSpecificOverrideOptions
INFO: Using database plugin for 
Oct 12, 2017 1:31:50 PM schemacrawler.utility.TypeMap <init>
WARNING: Could not obtain data type map from connection
java.lang.NullPointerException
    at org.sqlite.jdbc3.JDBC3Connection.getTypeMap(JDBC3Connection.java:90)
    at schemacrawler.utility.TypeMap.<init>(TypeMap.java:116)
    at schemacrawler.crawl.RetrieverConnection.<init>(RetrieverConnection.java:194)
    at schemacrawler.crawl.SchemaCrawler.crawl(SchemaCrawler.java:870)
    at schemacrawler.utility.SchemaCrawlerUtility.getCatalog(SchemaCrawlerUtility.java:75)
    at home.accounting.controller.SchemaConroller.<init>(SchemaConroller.java:35)
    at home.accounting.DA.DBCheck.start(DBCheck.java:44)
    at home.accounting.MainApp.start(MainApp.java:83)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
    at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191)
    at java.lang.Thread.run(Thread.java:748)

I downloaded schemacrawler.jar from here. Could it be that any other jars are needed as well?


回答1:


Alyona, you can ignore the warning in the log that you have posted in your question. The sqlite-jdbc jar is not fully compliant with the JDBC standards, so you have to very particular with the version of that jar. Please use version 3.7.8, which is only available with the SchemaCrawler distribution. In addition, you will need the schemacrawler-sqlite jar corresponding to the version of SchemaCrawler that you are using.

Sualeh Fatehi, SchemaCrawler



来源:https://stackoverflow.com/questions/46709777/which-jar-files-are-required-for-schemacrawler

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!