You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot可执行Jar运行报错:无法确定合适数据库驱动类

报错原因及Docker部署注意事项

核心报错原因

1. 数据库URL配置带多余空格

你的application.properties里spring.datasource.url的等号后多了个空格:

spring.datasource.url= jdbc:postgresql://localhost:5432/animals

这个空格会被Spring当成URL的一部分,实际解析出来的URL开头带空格,JDBC驱动无法识别这种格式,因此抛出"无法确定合适的驱动类"的错误。本地IDE运行时可能自动处理了这个空格,所以没出问题,但打包成Jar后配置文件原封不动,就触发了错误。

2. 驱动打包的潜在问题

pom.xml里PostgreSQL驱动的scope设为runtime:

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <scope>runtime</scope>
</dependency>

正常用Spring Boot Maven插件打包时会包含runtime依赖,但如果你用了普通的mvn package而不是mvn spring-boot:package,可能导致驱动没被打进Jar里,也会触发这个错误。

Docker部署额外要注意的点

就算解决了本地Jar的问题,部署到Docker还会有新问题:

  • 容器里的localhost指的是容器自身,不是宿主机的PostgreSQL服务,所以要把URL里的localhost改成宿主机IP、Docker Compose里的PostgreSQL服务名,或者数据库的外部可访问地址。
  • 要确保容器能连通到PostgreSQL的5432端口,比如通过端口映射或配置同Docker网络实现。
解决步骤
  1. 修正URL配置:把spring.datasource.url等号后的空格删掉,改为:
    spring.datasource.url=jdbc:postgresql://localhost:5432/animals
    
  2. 正确打包:使用mvn clean spring-boot:package命令重新打包,确保驱动依赖被包含进Jar。
  3. Docker适配:部署时调整数据库URL,比如用Docker Compose的话,改成jdbc:postgresql://postgres:5432/animals(假设PostgreSQL服务名为postgres)。

内容的提问来源于stack exchange,提问作者mak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 03:25:19