Spring Maven从资源文件夹读取

时间:2019-05-30 15:47:00

标签: java spring maven spring-boot classpath

我正在使用Spring Boot。我想在src / main / resources文件夹中读取一个json文件。

File file = new File(this.getClass().getClassLoader().getResource(inputFileName).getFile());

行家:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src/main/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="src" output="target/test-classes" path="src/test/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="test" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="output" path="target/classes"/>
</classpath>

现在,当我使用Spring Tools(运行方式-> Spring Boot App)在Eclipse中运行Spring Boot应用程序时,出现NoSuchFileException,并且该应用程序试图在/ target / classes /中而不是/ src /中查找文件。 main / resources文件夹。

此外,我在/ target / classes /文件夹中看不到该文件。为什么Maven不将其复制到目标/类?

我该怎么做才能从资源文件夹中读取内容?

2 个答案:

答案 0 :(得分:0)

如果您在普通的Maven Java项目中工作。 src/main/resources默认在类路径中。因此,与maven打包时,可以访问其下的文件。即使在Eclipse项目中,resources中的文件也将被复制到target/classes文件夹中。所以没问题。

答案 1 :(得分:0)

您不必使用文件来读取内容。您可以致电

this.getClass().getResourceAsStream(inputFileName)

这样,无论您具有JAR / WAR文件还是在eclipse中运行,它都将起作用。正如Yuan所指出的,在构建之后,资源将被复制并捆绑在文件中。 Eclipse管理maven类路径,并在执行应用程序时将适当的条目添加到类路径。