好吧,雅尔,我到处找了。免责声明:这是我的第一个spring项目,所以我可能只是犯了个错误。
我将在heroku平台上部署一个应用程序。我可以推送到github主分支,它将自动部署到heroku。长话短说:我正在尝试设置本地环境以运行它自己的数据库,而生产环境将运行它自己的数据库(原因很明显)。
我正在使用application.properties以及 application-{profile}.properties
这两个文件的命名约定: application-local.properties
,和 application-prod.properties
. 您可以查看对这个堆栈溢出原因的答案的引用,以及spring文档中的这个引用。
我已经在本地系统中设置了环境变量,并且可以在cmd中通过运行 echo %WHATEVER_ENV%
问题:这是my application.properties文件的外观: spring.profiles.active=${SPRING_PROFILES_ACTIVE}
如果我将此更改为: spring.profiles.active=local
它将从本地读取,这是硬编码的值。但是如果我把它改成prod,它确实读取了正确的文件,但是我得到了错误(顺便说一下,我已经在我的系统中设置了所有这些值);我的application-prod.properties文件如下所示
spring.datasource.url= ${SPRING_DATASOURCE_URL}
spring.datasource.username= ${SPRING_DATASOURCE_USERNAME}
spring.datasource.password= ${SPRING_DATASOURCE_PASSWORD}
spring.jpa.database-platform= ${SPRING_JPA_DATABASE-PLATFORM}
spring.datasource.driver-class-name=org.postgresql.Driver
我的跑步日志显示
Factory method 'entityManagerFactory' threw exception;
nested exception is java.lang.RuntimeException: Driver
org.postgresql.Driver claims to not accept jdbcUrl,
${SPRING_DATASOURCE_URL}
^^^这是我的问题。这就好像spring没有引入env变量一样。我做错什么了?
2条答案
按热度按时间n53p2ov01#
我显然需要在ide中设置环境变量。然而,我仍然想知道为什么环境变量没有从我的系统中拉进来。
编辑:上面的方法奏效了,但也要感谢@kushal,因为他的解决方案才是真正的解决方案。我需要重新启动ide
1tuwyuhd2#
您可能需要重新启动ide以便从系统的环境变量中获取最新的值,ide将变量存储在缓存中,需要重新启动以便刷新