【问题标题】:Spring Boot - Could not resolve placeholder when ran from jar fileSpring Boot - 从 jar 文件运行时无法解析占位符
【发布时间】:2016-12-25 03:07:01
【问题描述】:

我遇到了这个奇怪的问题,我可以在 Intellij 中毫无问题地运行我的 Spring Boot 应用程序,但是当我这样做时:

mvn clean package -Pst -Dspring.profiles.active=st && java -jar target/myapp-0.0.1-SNAPSHOT.jar

我可以看到错误提示 Spring Boot 无法解析 @Value 占位符。

ERROR o.s.boot.SpringApplication - Application startup failed
java.lang.IllegalArgumentException: Could not resolve placeholder

我所做的调查是获取 jar 文件并像使用 jar xf myapp.jar 一样提取文件,我可以在类路径根目录中看到属性文件。最初我遇到的问题是 Maven 没有从 main/resource 文件夹中打包我的属性和静态数据,但我已经通过以下方式解决了这个问题:

            <resource>
                <directory>src/main/resources</directory>
            </resource>
            <resource>
                <directory>static</directory>
                <targetPath>static</targetPath>
            </resource>

任何 cmets,想法我在这里可能缺少什么?

【问题讨论】:

    标签: spring maven properties spring-boot


    【解决方案1】:

    这不是 Maven 决定的,你使用什么 Spring Profile,而是在每次执行 jar 期间的 Spring 容器。不同的配置文件都可用。 Spring配置文件用于通过配置使可执行文件适应不同的环境。

    另外还有 Maven 配置文件,但它们配置可执行文件的构建,而不是执行。

    【讨论】:

      【解决方案2】:

      我设法解决了这个问题。这真的很奇怪,似乎我需要告诉 java 在哪个配置文件中运行 jar,例如 --spring.profiles.active=st

      mvn clean package -Pst -Dspring.profiles.active=st && java -jar target/myapp-0.0.1-SNAPSHOT.jar --spring.profiles.active=st
      

      【讨论】:

        猜你喜欢
        • 2018-02-20
        • 2018-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-20
        • 1970-01-01
        • 2016-07-24
        • 2017-05-01
        相关资源
        最近更新 更多