我正在使用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不将其复制到目标/类?
我该怎么做才能从资源文件夹中读取内容?
答案 0 :(得分:0)
如果您在普通的Maven Java项目中工作。 src/main/resources
默认在类路径中。因此,与maven打包时,可以访问其下的文件。即使在Eclipse项目中,resources
中的文件也将被复制到target/classes
文件夹中。所以没问题。
答案 1 :(得分:0)
您不必使用文件来读取内容。您可以致电
this.getClass().getResourceAsStream(inputFileName)
这样,无论您具有JAR / WAR文件还是在eclipse中运行,它都将起作用。正如Yuan所指出的,在构建之后,资源将被复制并捆绑在文件中。 Eclipse管理maven类路径,并在执行应用程序时将适当的条目添加到类路径。