【问题标题】:Inconsistent run of springboot application when run in Eclipse在 Eclipse 中运行时 Spring Boot 应用程序的运行不一致
【发布时间】:2018-02-27 17:49:09
【问题描述】:

我观察到在 Eclipse 中读取属性的方式不一致。我有一个非常简单的带有典型属性文件的 Springboot Web 项目。这是我的项目布局:

注意两个属性文件:testapplication.propertiesapplication.properties。在这一点上它们是相同的,目的是将它们用于测试和非测试环境。

当我尝试在 Eclipse 中运行此应用程序时,我收到有关缺少预期属性值的错误,例如: 无法解析值“${min.thread.count}”中的占位符“min.thread.count”

当我使用 gradle 的 bootRun 任务运行相同的设置时,它运行良好。

当我在 InteliJ 中运行相同的设置时,它运行良好。

如果我将 testapplication.properties 重命名为 application.properties,则应用程序在 Eclipse 中运行良好。因此,它使用属性表单测试文件夹。

此外,我很确定当我今天早上启动 Eclipse 时,我能够使用正确的 application.properties 和 testapplication.properties 文件运行应用程序。我正在进行单元测试并将 testapplication.properties 重命名为 application.properties,做了一些工作,然后将其重命名为 testapplication.properties 应用程序拒绝启动。我试图复制它:使用两个不同的属性文件(应用程序和测试应用程序)关闭 eclipse,再次启动它并运行应用程序。但是,此时我有同样的问题(抱怨缺少属性值)。

如您所见,这是我奇怪的行为。就目前而言,我发现我不能使用 Eclipse,因为我不确定它会做什么。我已经切换到 InteliJ 的社区版,因为它似乎工作正常。但作为 Eclipse 的长期粉丝,我很伤心 :)

有人知道是什么原因造成的吗?

编辑: 我在这里签入了我的测试项目: https://github.com/twolak2003/CamelSpringBootEureka.git 在分支 PropertyFileIssue 中。只需克隆,切换到 PropertyFileIssue 分支,作为 gradle 项目导入到 eclipse。

这是一个运行 eureka 服务器和 eureka 客户端的简单 vanilla spring 云启动项目。就本期而言,我们将只关注 eureka-service。

我正在使用最新的 Eclipse Oxygen。我确实在 Eclise Neon 中注意到了同样的问题。我改用氧气,希望问题会消失。只有插件是 Spring IDE。使用 Java 8 运行它。

测试 1:EurekaService/src/main/hello.java 作为 Java 应用程序启动。 它开始正常,将读取 src/main/resources/application.property 文件。

测试 2:EurekaService/src/main/test/resources/restapplication.properties 重命名为 EurekaService/src/ main/test/resources/application.properties。再次启动 EurekaService 应用程序。
发现:它启动也很好,但它使用 /src/test/resources 中的属性文件。这对我来说也是个问题,它不应该使用 /test/ 来运行应用程序。

测试 3:现在将 /src/test/resources/application.properties 重命名为 /src/test/resources /testapplication.properties。 (这是 test1 的重复)。再次将 EurekaService/src/main/hello 作为 java 应用程序运行。 发现尽管这是对 test1 的重复,但由于“无法解析值“${tomek.prop}”中的占位符 'tomek.prop'”,测试还是失败了。

我是在做一些非常愚蠢的事情还是有问题? 现在,我怀着沉重的心情转而使用 InteliJ 来继续我的项目。 Eclipse 的行为实在是太不可预测了,我现在无法忍受 :(

【问题讨论】:

    标签: spring eclipse spring-boot spring-boot-test


    【解决方案1】:

    到目前为止,除了停止使用 Eclipse 之外,我对此没有正确的答案 :)。但是有解决方法。

    请勿使用多个 application.property 文件。

    如果您需要测试属性来覆盖实际属性,请将您的文件命名为“application.property”以外的任何名称。否则你会得到不可预知的行为并且你的 Eclipse 运行时会感到困惑。

    【讨论】:

      猜你喜欢
      • 2016-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      • 2023-03-16
      • 1970-01-01
      • 2014-07-03
      相关资源
      最近更新 更多