IntelliJ IDEA未获取正确的应用程序 - {}。属性文件

时间:2017-02-24 20:32:23

标签: intellij-idea spring-boot

我有一个使用配置文件属性文件的spring boot 1.5.1项目。在我的/ src / main / resources中,我有我的所有属性文件 enter image description here

使用IntelliJ 2016.3.4时,我设置了

  

运行配置|活动档案

到“本地”并运行它。我在控制台中看到了这一点:

  

以下个人资料有效:本地

但是属性文件中有一个值  data.count.users=2

用作:

@Value("${data.count.users}")
private int userCount;

未被拾取并因此导致错误:

  

引起:java.lang.IllegalArgumentException:无法解决   占位符'data.count.users'在字符串值“$ {data.count.users}”

但是,如果我通过gradle运行

bootRun {
  systemProperty 'spring.profiles.active', System.properties['spring.profiles.active'] }

as

  

gradle bootRun -Dspring.profiles.active = local

然后一切都按预期使用本地配置文件启动。任何人都可以看到为什么这个没有被正确拿起?在IntelliJ项目结构中,我将/ src / main / resources定义为我的资源文件夹。

更新:

添加配置屏幕截图: enter image description here

3 个答案:

答案 0 :(得分:3)

我可能在这里错了,但看起来6 Lines环境变量实际上并未在您的配置中设置,无论您选择哪种活动配置文件。这可能是IntelliJ的错误。

但是,在运行中设置环境变量 - >编辑配置绝对适用于我。

enter image description here

答案 1 :(得分:2)

  1. Pease将Spring facet添加到Spring Boot模块以获得全面支持
  2. 模块resources的类路径是否正确,即它是否包含application.properties所显示的Jenkinsfile文件夹?
  3. 如果这没有帮助,请提交一个最小样本项目,在我们的bugtracker中复制项目的确切结构,有太多变量需要调查https://youtrack.jetbrains.com/issues/IDEA

答案 2 :(得分:0)

这也可能是由于非标准配置设置所致,例如:

src/main/resources
├── application.properties
├── config1
│   ├── application-dev.properties
│   ├── application-prod.properties
│   ├── application.properties
│   └── logback-spring.xml
├── config2
│   ├── application-dev.properties
│   ├── application-prod.properties
│   ├── application.properties
│   └── logback-spring.xml
└── config3
    ├── application-dev.properties
    ├── application-prod.properties
    ├── application.properties
    └── logback-spring.xml

这可以通过分别为logback和spring传递参数logging.configspring.config.name来解决。对于上面的示例:

java -jar \
-Dspring.profiles.active=dev \
-Dlogging.config=classpath:config1/logback-spring.xml \
-Dspring.config.name=application,config1/application \
target/my-application.0.0.1.jar

在这里使用根application.properties,由config1/application.properties覆盖,由config1/application-dev.properties覆盖。可以在VM Options的IDEA的运行配置中指定参数(环境变量)。

就高级IDE支持(突出显示,完成等)而言,复杂/自定义配置设置存在一个未解决的问题:IDEA-180498