Spring Boot没有启动器 - 父pom没有加载jdbc驱动程序

时间:2015-07-14 00:29:40

标签: maven jdbc spring-boot parent-pom

我使用'starter-parent'pom让我的Spring-Boot服务器运行良好。问题是,如果可能的话,我宁愿不使用弹簧pom作为父母。当我只包含spring-boot-dependencies pom时(如here所述),我最终得到的驱动程序没有被加载:

18:14:26.127 [localhost-startStop-1] WARN  o.a.t.jdbc.pool.PooledConnection - Not loading a JDBC driver as driverClassName property is null.
18:14:26.147 [localhost-startStop-1] ERROR o.a.tomcat.jdbc.pool.ConnectionPool - Unable to create initial connections of pool.
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/mydb
  at java.sql.DriverManager.getConnection(DriverManager.java:689) ~[na:1.8.0_45]
  at java.sql.DriverManager.getConnection(DriverManager.java:208) ~[na:1.8.0_45]
  at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:305) ~[tomcat-jdbc-8.0.23.jar:na]
  at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:200) ~[tomcat-jdbc-8.0.23.jar:na]
  ...

我很确定这与驱动程序没有被DriverManager加载的驱动程序有关。 ServiceLoader位,但我不确定如何强制这种情况发生。任何建议将不胜感激。

FWIW:如果我尝试'Class.forName()'MySQL jdbc驱动程序我实际上最终得到'NoClassDefFoundError',这是令人费解的,因为mysql-connector肯定在我的pom中。多个类加载器还是什么?

1 个答案:

答案 0 :(得分:0)

我认为我的问题与maven的导入方式和继承依赖关系有关,这些依赖关系是由我公司的父pom和spring-boot提供的。我无法解释它,但如果我注释掉我们父pom的依赖管理部分,一切似乎都能正常工作。这绝对是某种神秘的maven行为,但是现在我正在分离父pom的依赖管理和插件配置方面。这样我就可以继承插件配置,而不是依赖管理。

感谢您的帮助:)