我正在访问主类
中资源文件夹中的文件File file = new ClassPathResource("remoteUnitsIdsInOldServer.txt").getFile();
我收到此错误:
java.io.FileNotFoundException: class path resource [remoteUnitsIdsInOldServer.txt] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/Users/lopes/Documents/workspace-sts-3.9.0.RELEASE/telefonicaUtils/target/telefonicaUtils-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/remoteUnitsIdsInOldServer.txt
我甚至打开jar文件,文件remoteUnitsIdsInOldServer.txt在那里,类
答案 0 :(得分:0)
通常,源树看起来像这样:
src/
main/
java/
com/
...
resources/
remoteUnitsIdsInOldServer.txt
并且,使用标准的Maven / Gradle功能,会产生这样的JAR:
<JAR_ROOT>/
com/
...
remoteUnitsIdsInOldServer.txt
您列出的代码应该适用于这种情况。但是,你提到要查看你的JAR&#34;内部课程&#34;。我不认为会有一个&#34;类&#34; JAR中的文件夹。
祝你好运。答案 1 :(得分:0)
这取决于您的要求..
考虑到您需要从资源访问文本文件。您只需使用apache IOUtils
和java ClassLoader
。
Snippet(注意:IOUtils包 - &gt; org.apache.commons.io.IOUtils)
String result = "";
ClassLoader classLoader = getClass().getClassLoader();
try {
result = IOUtils.toString(classLoader.getResourceAsStream("fileName"));
} catch (IOException e) {
e.printStackTrace();
}
经典方式:
StringBuilder result = new StringBuilder("");
//Get file from resources folder
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("fileName").getFile());
try (Scanner scanner = new Scanner(file)) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
result.append(line).append("\n");
}
scanner.close();
} catch (IOException e) {
e.printStackTrace();
}
考虑到您需要从xml,properties文件等资源访问属性。
它太简单了,只需使用spring注释@ImportResource({ "classpath:application-properties.xml", "classpath:context.properties" })
希望对你有所帮助。