为什么org.flywaydb.core.Flyway API无法加载内置的mysql驱动程序

时间:2018-10-12 10:12:50

标签: flyway

我正在尝试使用Flyway程序化API随应用程序启动进行迁移,但似乎无法加载mysql驱动程序。 我正在使用gradle(如果我使用命令行,一切正常,大概是因为我可以指定驱动程序),但是在应用程序启动时出现以下错误:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
    at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: org.flywaydb.core.api.FlywayException: Unable to instantiate JDBC driver: com.mysql.cj.jdbc.Driver => Check whether the jar file is present
    at org.flywaydb.core.internal.jdbc.DriverDataSource.<init>(DriverDataSource.java:141)
    at org.flywaydb.core.internal.jdbc.DriverDataSource.<init>(DriverDataSource.java:107)
    at org.flywaydb.core.api.configuration.ClassicConfiguration.setDataSource(ClassicConfiguration.java:1226)
    at org.flywaydb.core.api.configuration.FluentConfiguration.dataSource(FluentConfiguration.java:741)
    ... 8 more
Caused by: org.flywaydb.core.api.FlywayException: Unable to instantiate class com.mysql.cj.jdbc.Driver : com.mysql.cj.jdbc.Driver
    at org.flywaydb.core.internal.util.ClassUtils.instantiate(ClassUtils.java:63)
    at org.flywaydb.core.internal.jdbc.DriverDataSource.<init>(DriverDataSource.java:137)
    ... 12 more
Caused by: java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:94)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.flywaydb.core.internal.util.ClassUtils.instantiate(ClassUtils.java:61)
    ... 13 more

2 个答案:

答案 0 :(得分:0)

这似乎是mysql连接器的问题。我降级为6.0。+并且工作正常。

compile ('mysql:mysql-connector-java:6.0.+')

答案 1 :(得分:-2)

Thx。它解决了我的问题。我在用

 runtimeOnly "mysql:mysql-connector-java:8.0.14"