首页 > 解决方案 > Spring Boot java.lang.IllegalArgumentException:URL 必须以“jdbc”开头

问题描述

尝试启动我的项目时出现错误:

java.lang.IllegalArgumentException:URL 必须以“jdbc”开头

我在 application.properties 文件中配置我的数据库连接,如下所示:

spring.datasource.url=${JDBC_DATABASE_URL}
spring.datasource.username=${JDBC_DATABASE_USERNAME}
spring.datasource.password=${JDBC_DATABASE_PASSWORD}       

并有一个获取 VM 选项的 maven/spring-boot 启动脚本:

-DJDBC_DATABASE_URL="jdbc:postgresql://localhost:5432/project"
-DJDBC_DATABASE_USERNAME="postgres"
-DJDBC_DATABASE_PASSWORD="postgres"

一些测试告诉我,VM 选项完全没有解决,但我不知道如何解决这个问题。

我的 IDE 是 IntelliJ 社区版。

它工作得很好。今天我将项目升级到 Java 15,但我认为这不应该导致这样的问题。

你知道配置被覆盖的地方吗?

标签: javaspringpostgresqlspring-bootillegalargumentexception

解决方案


当您仅引用该值时,引号字符将成为该值的一部分,这意味着 URL 现在以 a 开头"jdbc,因此您会收到错误消息“必须以jdbc”开头。

你有两个选择:

  1. 不要引用:

    -DJDBC_DATABASE_URL=jdbc:postgresql://localhost:5432/project
    -DJDBC_DATABASE_USERNAME=postgres
    -DJDBC_DATABASE_PASSWORD=postgres
    
  2. 引用整个论点:

    "-DJDBC_DATABASE_URL=jdbc:postgresql://localhost:5432/project"
    "-DJDBC_DATABASE_USERNAME=postgres"
    "-DJDBC_DATABASE_PASSWORD=postgres"
    

推荐阅读