【问题标题】:org.flywaydb.core.api.FlywayException: Unable to instantiate JDBC driver when my java class is triggered from ant taskdeforg.flywaydb.core.api.FlywayException:当我的 java 类从 ant taskdef 触发时,无法实例化 JDBC 驱动程序
【发布时间】:2017-09-15 02:10:12
【问题描述】:

我编写了一个 java 类,它使用从 taskdef 操作类路径加载的依赖 jar flyway-core-4.0.3.jar 并调用 flyway jar 中的方法,以下是导致问题

   public static boolean executeFlywayMigrate(String connectionUrl, String username, String password,
        String scriptLocation, String[] databaseNames, Map<String, String> componentProperties,
        boolean validateOnMigrate)
        throws SQLException {
    LOGGER.info("Database schemas for migration are :" + Arrays.toString(databaseNames));
    try {
        Flyway flyway = new Flyway();
        flyway.setLocations(scriptLocation);
        flyway.setSchemas(databaseNames);
        flyway.setBaselineOnMigrate(true);
        flyway.setDataSource(connectionUrl, username, password);
        if (componentProperties != null) {
            flyway.setPlaceholders(componentProperties);
        }
        flyway.setValidateOnMigrate(validateOnMigrate);
        flyway.repair();
        flyway.migrate();
    } catch (RuntimeException e) {
        LOGGER.error("Database migration failed.", e);
        throw new SQLException(e);
    }

我正在使用 taskdef 操作触发 ant 类。我已经给出了 taskdef 动作的 classpathref。

<taskdef name="ExecuteMigrationScripts" classname="com.install.common.db.action.ExecuteMigrationScripts" 
                classpathref="class.dependencies" loaderref="class.dependencies.loader"/>
<ExecuteMigrationScripts/> 

仅当 flyway 尝试搜索 db jar 时才会出现此问题(在我的情况下,我已尝试使用 mysql-connector-java-5.1.39-bin.jar 和 sqljdbc41.jar 但出现相同的问题)。

注意:如果我从 taskdef 操作触发不同的类,该操作尝试连接到数据库并创建示例数据库模式,则工作正常,并且可以从 taskdef 操作中提到的类路径加载相同的 db jar,但是仅当 flyway 尝试定位 db jar 时才会出现此问题。

如果我在这里遗漏了什么,请帮助我。

【问题讨论】:

    标签: java sql-server jdbc ant flyway


    【解决方案1】:

    即使在调用 taskdef 操作时将所有驱动程序 jar 添加到类路径中,flyway 也无法获取 jdbc 驱动程序的类路径。

    但是使用命令“ant -lib path_to_the_jdbc_driver_jars”设置类路径解决了我的问题。

    【讨论】:

      猜你喜欢
      • 2015-03-23
      • 2012-08-27
      • 2018-07-27
      • 1970-01-01
      • 2021-06-05
      • 2013-12-11
      • 2017-05-17
      • 1970-01-01
      相关资源
      最近更新 更多