原因:java.io,FileNotFoundException:无法打开类路径资源[application.properties],因为它不存在

ctzwtxfj  于 2022-09-19  发布在  Java
关注(0)|答案(15)|浏览(549)

我正在创建一个spring boot批处理应用程序。该批处理从postgres加载数据并插入MongoDB。我已经编写了代码,但在运行spring boot应用程序时,它显示错误:找不到application.properties文件。以下是错误片段:

'Caused by: java.io.FileNotFoundException: class path resource [application.properties] cannot be opened because it does not exist'
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.example.batch.SpringBatchExample]; nested exception is java.io.FileNotFoundException: class path resource [application.properties] cannot be opened because it does not exist

以下是application.properties文件内容:

spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=Test_Data

# logging

logging.level.org.springframework.data=DEBUG
logging.level.=ERROR
logging.level.com.mastercard.refdata.*=DEBUG

# By default, Spring runs all the job as soon as it has started its context.

spring.batch.job.enabled=false

# Chunk Size to save data

spring.chunk.size=200

# Postgres DATASOURCE

spring.datasource.url=jdbc:postgresql://localhost:5432/Company-Test
spring.datasource.username=postgres
spring.datasource.password=test123
spring.datasource.driver-class-name=org.postgresql.Driver

请让我知道为什么我会遇到这个问题??

biswetbf

biswetbf1#

1.检查您的应用程序。属性文件位于资源目录中,如下图所示:
1.如果你保留你的申请。如下图所示,将属性设置到其他文件夹(例如config),然后配置pom。xml和以下代码:

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

ykejflvf2#

我有同样的问题,尽管所有配置都是正确的。很长一段时间后,我只使用了mvn clean package命令,一切都很好。

nfzehxib

nfzehxib3#

配置pom。xml文件添加资源;

<build>
        <finalName>your-project-name</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.yml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.yml</include>
                </includes>
                <excludes>
                    <exclude>**/*.java</exclude>
                    <exclude>**/*.class</exclude>
                </excludes>
            </resource>
        </resources>
</build>
1bqhqjot

1bqhqjot4#

您需要在运行配置中的引导选项卡中配置config路径(projectBaseName\target\local\config),因为所有属性文件都放在classpath.中

6ju8rftf

6ju8rftf5#

将其标记为根资源。
以下是intellij中的操作方式:

gcuhipw9

gcuhipw96#

对我来说,解决方案是将库(在我的情况下是我主项目的依赖项)重新添加到我正在处理的主项目的程序集部署中。由于某些原因,Eclipse无法在其类路径中检测到该项目。
https://i.stack.imgur.com/pyvTk.png

m3eecexj

m3eecexj7#

如果您使用IntelliJ Idea
If you declared your classpath like this:

@PropertySource("classpath:sport.properties")
public class SportConfig {
 //some code
}

Then you Should add your properties file to the resources directory

2mbi3lxu

2mbi3lxu8#

application.properties文件移动到资源目录。

iezvtpos

iezvtpos9#

Use this on configuration class

@Configuration
@PropertySource("classpath:application.properties")

(OR)

Use this in xml file

<bean       class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>application.properties</value>
            </list>
        </property>
    </bean>
4zcjmb1e

4zcjmb1e10#

与在@sqlgroup的@sql注解中使用classpath:filepath不同,它使用file:filepath在整个文件夹中进行java搜索,搜索类似路径的文件,这对我来说很有吸引力

wi3ka0sx

wi3ka0sx11#

作为记录,当您在多个IDE中打开项目时,也会发生这种情况。例如,Eclipse不识别其他IDE的配置文件。
如果在Eclipse中发生这种情况,我们可以做的是转到project->“clean…”选项。这将清理生成文件并重新生成项目。

icomxhvb

icomxhvb12#

属性文件位置:src/student-info.properties
我成功导入如下。

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">

    <context:property-placeholder location="file:src/student-info.properties"/>

    <bean id="student" class="com.Student">
        <property name="name" value="${student.name}"/>
        <property name="hobby" value="${student.interestedCourse}"/>
        <property name="interestedCourse" value="${student.hobby}"/>
    </bean>

</beans>
50pmv0ei

50pmv0ei13#

如果您使用Eclipse IDE,您应该在src中创建一个“resources”文件夹。那就行了。

13z8s7eq

13z8s7eq14#

我的问题是一样的。您正在尝试连接项目中的多个数据库。
在主应用程序运行中,具有如下注解:

{ { {@PropertySources({@PropertySource("/../resources/datasource_cfg.properties")})}

它是应用程序运行时要解析的路径。也许你的路不对。

pod7payv

pod7payv15#

对于固定路径,您可以使用:

  • @PropertySource(“文件:${C:/Development/workspace/Projectname/resources/}/application.properties”)*

相关问题