使用 Flyway 时出现 NoClassDefFoundError

Posted

技术标签:

【中文标题】使用 Flyway 时出现 NoClassDefFoundError【英文标题】:NoClassDefFoundError when using Flyway 【发布时间】:2019-06-26 14:08:37 【问题描述】:

以下调用(我用替换了敏感信息):

flyway
-url=jdbc:oracle:thin:@//<server_name>:<port_number>/<service_name>
-jarDirs=<jar_directory_paths>
-locations=filesystem:<path>
-user=<user> -password=<password> info

产生以下错误:

Flyway 输出:Boxfuse 的 Flyway 4.2.0

线程“主”java.lang.NoClassDefFoundError 中的异常: oracle/dms/控制台/DMSConsole 在 oracle.jdbc.driver.DMSFactory.(DMSFactory.java:44) 在 oracle.jdbc.driver.PhysicalConnection.createDMSSensors(PhysicalConnection.java:4202) 在 oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:628) 在 oracle.jdbc.driver.T4CConnection.(T4CConnection.java:217) 在 oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:28) 在 oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:537) 在 org.flywaydb.core.internal.util.jdbc.DriverDataSource.getConnectionFromDriver(DriverDataSource.java:416) 在 org.flywaydb.core.internal.util.jdbc.DriverDataSource.getConnection(DriverDataSource.java:381) 在 org.flywaydb.core.internal.util.jdbc.JdbcUtils.openConnection(JdbcUtils.java:51) 在 org.flywaydb.core.Flyway.execute(Flyway.java:1418) 在 org.flywaydb.core.Flyway.info(Flyway.java:1097) 在 org.flywaydb.commandline.Main.executeOperation(Main.java:152) 在 org.flywaydb.commandline.Main.main(Main.java:103) 引起:java.lang.ClassNotFoundException: oracle.dms.console.DMSConsole 在 java.net.URLClassLoader.findClass(URLClassLoader.java:382) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 13 更多

任何想法可能是什么原因?

【问题讨论】:

flyway/drivers 文件夹中的 Oracle JDBC 驱动程序是什么版本? 5 和 6 flyway/drivers$ ls ojdbc5dms_g.jar ojdbc5dms.jar ojdbc5_g.jar ojdbc5.jar ojdbc6dms_g.jar ojdbc6dms.jar ojdbc6_g.jar ojdbc6.jar simplefan.jar Oracle Instant Client 版本为 11.2。 0 会不会是需要版本8。 异常信息中缺少的类肯定在v8驱动中 非常感谢朱莉娅。我正在等待团队更新 Oracle JDBC 驱动程序并让您知道它是否解决了问题。 【参考方案1】:

异常消息中缺少的类在 v8 Oracle JDBC 驱动程序和后续驱动程序中。您应该能够通过将安装升级到最新版本的驱动程序来解决问题。

【讨论】:

以上是关于使用 Flyway 时出现 NoClassDefFoundError的主要内容,如果未能解决你的问题,请参考以下文章

通过 Flyway 运行批处理脚本时出现 SQL 错误 586

从 ServletContext 资源解析 XML 文档时出现意外异常

在 Jenkins 管道中的 docker 中安装卷时出现问题

Flyway忽略指定的模式

Flyway 迁移无法识别 beforeValidate.sql

Flyway迁移无法识别beforeValidate.sql