【问题标题】:Spring Boot not recognizing application.properties fileSpring Boot 无法识别 application.properties 文件
【发布时间】:2017-10-04 17:17:53
【问题描述】:

我正在尝试使用 Spring Boot 配置 DynamoDb 客户端,并将我的端点和配置信息放在我的 resources/application.properties 文件中。但是,Spring Boot 似乎没有拾取这些属性。它确实获取了我存储在同一个文件中的“server.default”键,因此它肯定会识别文件本身。

这是我的 application.properties 文件和我尝试将属性加载到的类 (DynamoDBClientMapper):

amazon.dynamodb.endpoint=http://localhost:8000/
amazon.dynamodb.region=us-west-1
amazon.aws.accesskey=key
amazon.aws.secretkey=key2

server.port=8080

这是我的项目结构:

这是我试图将属性加载到的相关类。我尝试了 @PropertySource 注释与新的属性文件,以及 EnableAutoConfiguration,但都没有注册属性文件。

@PropertySource("database.properties")
public class DynamoClientMapper {

    @Value("${amazon.dynamodb.endpoint}")
    private String amazonDynamoDBEndpoint;

    @Value("${amazon.aws.accesskey}")
    private String amazonAWSAccessKey;

    @Value("${amazon.aws.secretkey}")
    private String amazonAWSSecretKey;

    @Value("${amazon.aws.region}")
    private String amazonAWSRegion;

这是我的 App.java:

@SpringBootApplication
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
public class App {

//    private static final Logger logger = Logger.getLogger(App.class.toString());

    public static void main(String[] args){
        SpringApplication.run(App.class, args);
    }
}

这是堆栈跟踪:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dynamoClientMapper' defined in file [C:\Users\ychen4\Desktop\DiningApplication\target\classes\main\java\com\dining\dao\DynamoClientMapper.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [main.java.com.dining.dao.DynamoClientMapper$$EnhancerBySpringCGLIB$$f4ba10ad]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: endpoint cannot be null
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1155) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1099) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) ~[spring-context-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1162) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1151) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
    at main.java.com.dining.App.main(App.java:18) [classes/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) [spring-boot-devtools-1.5.2.RELEASE.jar:1.5.2.RELEASE]
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [main.java.com.dining.dao.DynamoClientMapper$$EnhancerBySpringCGLIB$$f4ba10ad]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: endpoint cannot be null
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:154) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:89) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1147) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    ... 22 common frames omitted
Caused by: java.lang.IllegalArgumentException: endpoint cannot be null
    at com.amazonaws.util.RuntimeHttpUtils.toUri(RuntimeHttpUtils.java:182) ~[aws-java-sdk-core-1.11.125.jar:na]
    at com.amazonaws.util.RuntimeHttpUtils.toUri(RuntimeHttpUtils.java:171) ~[aws-java-sdk-core-1.11.125.jar:na]
    at com.amazonaws.AmazonWebServiceClient.toURI(AmazonWebServiceClient.java:238) ~[aws-java-sdk-core-1.11.125.jar:na]
    at com.amazonaws.AmazonWebServiceClient.setEndpoint(AmazonWebServiceClient.java:228) ~[aws-java-sdk-core-1.11.125.jar:na]
    at com.amazonaws.client.builder.AwsClientBuilder.setRegion(AwsClientBuilder.java:362) ~[aws-java-sdk-core-1.11.125.jar:na]
    at com.amazonaws.client.builder.AwsClientBuilder.configureMutableProperties(AwsClientBuilder.java:337) ~[aws-java-sdk-core-1.11.125.jar:na]
    at com.amazonaws.client.builder.AwsSyncClientBuilder.build(AwsSyncClientBuilder.java:46) ~[aws-java-sdk-core-1.11.125.jar:na]
    at main.java.com.dining.dao.DynamoClientMapper.<init>(DynamoClientMapper.java:32) ~[classes/:na]
    at main.java.com.dining.dao.DynamoClientMapper$$EnhancerBySpringCGLIB$$f4ba10ad.<init>(<generated>) ~[classes/:na]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_121]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_121]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_121]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_121]
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:142) ~[spring-beans-4.3.7.RELEASE.jar:4.3.7.RELEASE]
    ... 24 common frames omitted

我尝试制作另一个单独的 database.properties 文件,但 Spring Boot 也没有识别到​​这一点。我做错了什么?

【问题讨论】:

  • 发布你的配置类
  • 我添加了我的堆栈跟踪和 App.java。那是你要找的吗? @DoNhuVy

标签: java spring spring-boot


【解决方案1】:

您可以尝试在 pom.xml 文件的构建部分中定义资源标签。为application.properties的资源目录设置路径

<build>
        <resources>
            <resource>
                <directory>resources</directory>
                <targetPath>${project.build.outputDirectory}</targetPath>
                <includes>
                    <include>application.properties</include>
                </includes>
            </resource>
        </resources>
</build>

资源链接:https://stackoverflow.com/a/30595114/2293534

另一种方法:

如果你使用spring 3.X版本,可以加@PropertySource("application.properties")

@Configuration
@PropertySource(value = "classpath:application.properties")
public class ApplicationConfig {

    // more configuration ...
}

如果您使用 spring 4 版本,则使用名为 @PropertySources 的新注释添加 2 个属性文件,该注释允许您声明重复的 @PropertySource 注释:

@PropertySources({
    @PropertySource("default.properties"),
    @PropertySource("overriding.properties")
})

详细信息在我的另一个答案中给出:https://stackoverflow.com/a/43659158/2293534

更新#1:

用下面的类替换你的 App.java 类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

//@SpringBootApplication
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }


    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(applicationClass);
    }

    private static Class<Application> applicationClass = Application.class;
}

对于 java.io.FileNotFoundException:

使用下面的

@PropertySource(value = "database.properties", ignoreResourceNotFound = true)

更新#2:

我已按照以下步骤运行您的应用程序。运行成功。

  1. 转到 pom.xml 所在的项目文件夹。

  2. 您在 pom.xml 上有一些错误和警告。我都说清楚了。

  3. 打开命令提示符并运行mvn clean

  4. 运行mvn clean install

  5. 终于mvn spring-boot:run

然后在浏览器中,我运行“http://localhost:8080/

项目成功打开。我也搜索了其他也打开成功的页面。

首页如下图http://localhost:8080/

查看所有页面如下所示:http://localhost:8080/api/reviews

[{"id":1,"userName":"ychennay","re​​viewText":"这家餐厅太棒了!"},{"id":2,"userName":"david","re​​viewText" :“这家餐厅 没问题!"},{"id":3,"userName":"ben","re​​viewText":"这家餐厅是 平庸!"},{"id":4,"userName":"leon","re​​viewText":"这家餐厅 太糟糕了!"},{"id":5,"userName":"lawrence","re​​viewText":"这个 餐厅很混乱!"}]

所以替换你的 pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.diningapp</groupId>
    <artifactId>Dining</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <properties>
        <jackson.version>2.7.5</jackson.version>
        <spring-version>4.3.7.RELEASE</spring-version>
        <dynamodb-local.port>8000</dynamodb-local.port>
        <dynamodb-local.endpoint>http://localhost:${dynamodb-local.port}</dynamodb-local.endpoint>
        <spring-boot-version>1.5.2.RELEASE</spring-boot-version>
        <aws-sdk-java-version>1.11.124</aws-sdk-java-version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- For UTF-8 support -->
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!-- For UTF-8 support -->
    </properties>


    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.7</source> <!-- Used java7 -->
                    <target>1.7</target> <!-- Used java7 -->
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot-version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.0.0</version>
                <configuration>
                    <warSourceDirectory>WebContent</warSourceDirectory>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>dynamodb-local-oregon</id>
            <name>DynamoDB Local Release Repository</name>
            <url>https://s3-us-west-2.amazonaws.com/dynamodb-local/release</url>
        </repository>
    </repositories>







    <dependencies>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-releasetrain</artifactId>
            <version>Hopper-SR10</version>
            <type>pom</type>
            <!-- <scope>import</scope> -->
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <version>${spring-boot-version}</version> <!-- You have missed to add this version -->
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <version>${spring-boot-version}</version> <!-- You have missed to add this version -->
            <optional>true</optional>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>${spring-boot-version}</version>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-dynamodb</artifactId>
            <version>${aws-sdk-java-version}</version>
        </dependency>
        <dependency>
            <groupId>com.github.derjust</groupId>
            <artifactId>spring-data-dynamodb</artifactId>
            <version>4.3.1</version>
        </dependency>

        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-bom</artifactId>
            <version>${aws-sdk-java-version}</version>
            <type>pom</type>
            <!-- <scope>import</scope> -->
            <scope>provided</scope> <!-- changed import to provided -->
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <version>${spring-boot-version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring-version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring-version}</version>
        </dependency>
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring-version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version> <!-- You have missed to add this version -->
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-security -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
            <version>${spring-boot-version}</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.10</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>

错误及解决方法:

问题#1:

[警告] org.springframework.data:spring-data-releasetrain:pom 的“dependencies.dependency.scope”必须是其中之一 [提供,编译,运行时,测试,系统]但是是'导入'。 @ 第 70 行, 第 18 栏

解决方案#1:

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-releasetrain</artifactId>
    <version>Hopper-SR10</version>
    <type>pom</type>
    <!-- <scope>import</scope> -->
    <scope>provided</scope>  <!-- changed import to provided -->
</dependency>

问题#2:

[错误] org.springframework.boot:spring-boot-devtools:jar 的“dependencies.dependency.version”缺失。 @ 线 73,第 19 栏

解决方案#2:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <version>${spring-boot-version}</version> <!-- You have missed to add this version -->
    <optional>true</optional>
</dependency>

问题#3:

[错误] 'dependencies.dependency.version' for org.springframework.boot:spring-boot-configuration-processor:jar 是 失踪。 @ 第 78 行,第 19 列

解决方案#3:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <version>${spring-boot-version}</version> <!-- You have missed to add this version -->
    <optional>true</optional>
</dependency>

问题#4:

[警告] com.amazonaws:aws-java-sdk-bom:pom 的“dependencies.dependency.scope”必须是 [provided, compile, runtime, test, system] 但是是“导入”。 @ 第 105 行,第 18 列

解决方案#4:

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-bom</artifactId>
    <version>${aws-sdk-java-version}</version>
    <type>pom</type>
    <!-- <scope>import</scope> -->
    <scope>provided</scope> <!-- changed import to provided -->
</dependency>

问题#5:

[错误] mysql:mysql-connector-java:jar 的“dependencies.dependency.version”缺失。 @ 第 148 行,第 19 列

解决方案#5:

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.38</version> <!-- You have missed to add this version -->
</dependency>

【讨论】:

  • 谢谢,但您提到的解决方案都不适合我。我收到此错误。我的资源文件夹中有一个名为 database.properties 的文件。 org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [main.java.com.dining.App]; nested exception is java.io.FileNotFoundException: class path resource [database.properties] cannot be opened because it does not exist
  • @YuChen 请检查更新并让我知道状态。
  • 还是没有运气。如果你愿意,你可以从我的 repo 中克隆一个 spring boot 项目的副本并亲自查看:www.github.com/ychennay/DiningApplication。这真是令人沮丧。
  • @YuChen 您在 pom.xml 文件中缺少某些版本。我已经解决了所有问题并成功运行。所有输出均已附加。所以更换你的 pom.xml 并让我知道是否出现任何问题。
  • 感谢第二种方法有效。我正在创建一个控制台应用程序(不是 web mvc),似乎 gradle 会影响打包资源文件的方式。
【解决方案2】:

使用@Configuration 代替@EnableAutoConfiguration,如下所示。此外,您还需要修复 aws 区域属性,因为它在 prop 文件和代码之间的名称不同 - [amazon.dynamodb.region vs amazon.aws.region] - 一旦在以下更改后开始拾取属性文件,这将引发错误..

@Configuration
@PropertySource("database.properties")
public class DynamoClientMapper {

    @Value("${amazon.dynamodb.endpoint}")
    private String amazonDynamoDBEndpoint;

    @Value("${amazon.aws.accesskey}")
    private String amazonAWSAccessKey;

    @Value("${amazon.aws.secretkey}")
    private String amazonAWSSecretKey;

    @Value("${amazon.aws.region}")
    private String amazonAWSRegion;

【讨论】:

  • 谢谢,但这对我不起作用。我收到以下错误:org.springframework.beans.factory.BeanDefinitionStoreException:无法解析配置类 [main.java.com.dining.App];嵌套异常是 java.io.FileNotFoundException:类路径资源 [database.properties] 无法打开,因为它不存在
  • 显然期望 database.properties 应该在您的类路径中。您可以将它放在与 application.properties 相同的位置的资源文件夹中,除非由于某种原因您不能这样做并且需要将其保存在外部位置,那么您必须在 PropertySource 中提供文件路径,如此处所述 - stackoverflow.com/questions/29013760/…
  • 它确实与 application.properties 位于同一位置(请参阅我的目录树屏幕截图)。
【解决方案3】:

请仔细检查,您的 maven-pom 使用了这种包装:

<packaging>war</packaging>

如果设置为 pom 或类似名称,您的 IDE 可能无法识别模块的“Spring”性质(在 IntelliJ 2018 中发生在我身上)。

【讨论】:

    【解决方案4】:

    试过以下方法吗?

    @Component
    @PropertySource("database.properties")
    public class DynamoClientMapper { ...}
    

     @Service
     @PropertySource("database.properties")
     public class DynamoClientMapper { ...}
    

    【讨论】:

    • 这对我不起作用。我收到以下错误,尽管资源文件夹中显然有一个 database.properties 文件。 org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [main.java.com.dining.App]; nested exception is java.io.FileNotFoundException: class path resource [database.properties] cannot be opened because it does not exist
    【解决方案5】:

    您也可以使用固定路径。

    @PropertySource("file:${C:/Development/workspace/Project/resources/}/application.properties")

    在您想使用不同属性文件的开发过程中很有帮助。

    【讨论】:

      【解决方案6】:

      还有一个问题可能是您在依赖关系层次结构中重复了 spring-data-jpa 的依赖关系,因此您有 2 组不同的环境配置文件,并且在运行应用程序时,运行程序会获取一组不需要的环境。

      api("org.springframework.data", "spring-data-jpa", "2.3.4.RELEASE")
      

      所以我建议检查项目模块,如果层次结构中有多个依赖项下载定义。虽然没有必要删除重新出现或重复的那个,但有必要对其进行注释和取消注释以重新同步并使 spring runner 获取所需的一组环境。

      1. 评论依赖
      2. 同步
      3. 取消注释依赖
      4. 同步
      5. 运行应用程序

      Gradle 的东西

      GL

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-07
        • 1970-01-01
        • 1970-01-01
        • 2021-07-25
        • 2015-09-25
        • 2019-02-26
        • 2017-03-30
        相关资源
        最近更新 更多