Ошибка SchemaCrawler при добавлении артефакта MariaDB
Когда я добавляю это в pom.xml:
<!-- https://mvnrepository.com/artifact/us.fatehi/schemacrawler-mariadb -->
<dependency>
<groupId>us.fatehi</groupId>
<artifactId>schemacrawler-mariadb</artifactId>
<version>14.08.06</version>
</dependency>
Тогда я получаю ошибку:
java.util.ServiceConfigurationError: schemacrawler.tools.databaseconnector.DatabaseConnector: Provider schemacrawler.server.mariadb.MariaDBDatabaseConnector could not be instantiated
..
Caused by: java.lang.NoSuchMethodError: schemacrawler.tools.databaseconnector.DatabaseConnector.<init>(Lschemacrawler/tools/databaseconnector/DatabaseServerType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
Я пытаюсь подключиться к базе данных Oracle. Это работает, если я опущу MariaDb из пом.
Я использую более высокую версию SchemaCrawler:
<dependency>
<groupId>us.fatehi</groupId>
<artifactId>schemacrawler</artifactId>
<version>14.21.02</version>
</dependency>
<!-- https://mvnrepository.com/artifact/us.fatehi/schemacrawler-oracle -->
<dependency>
<groupId>us.fatehi</groupId>
<artifactId>schemacrawler-oracle</artifactId>
<version>14.21.02</version>
</dependency>
Я хотел бы иметь MariaDB в pom.xml и все еще иметь возможность читать Oracle с помощью SchemaCrawler. Ошибка возникает после подключения к базе данных в последней строке следующего кода:
Connection dbConnection = DatabaseBroker.getDbConnection(
eventName,
cbDatabase.getValue(),
tConnectionString.getValue(),
tUsername.getValue(),
tPassword.getValue()
);
//Schema schema = SchemaCrawler.getSchema(dbConnection, SchemaInfoLevel.detailed(), new SchemaCrawlerOptions());
//SchemaCrawler sc = new SchemaCrawler(dbConnection, null);
try
{
Catalog catalog = SchemaCrawlerUtility.getCatalog(dbConnection, null);
1 ответ
Решение
Вы используете несовместимые версии основной библиотеки SchemaCrawler и подключаемого модуля базы данных SchemaCrawler. Вам не нужен плагин для MariaDB, если вы подключаетесь к Oracle. Фактически, SchemaCrawler будет работать с большинством баз данных даже без плагина базы данных SchemaCrawler на пути к классам.