I’m trying to read a text file using Spring resource loader like this :
Resource resource = resourceLoader.getResource("classpath:\\static\\Sample.txt");
The file locates here in my Spring boot project:
It works fine when running the application in eclipse, but when I package the application then run it using java –jar , I get file not found exception :
java.io.FileNotFoundException: class path resource [static/Sample.txt] cannot be resolved to absolute file path because it does not reside in the
file system: jar:file:/C:/workspace-test/XXX/target/XXX-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/static/Sample.txt
I unziped the Jar file the Sample locates in : XXX-0.0.1-SNAPSHOT\BOOT-INF\classes\static\Sample.txt
Can someone help me please ?
Thanks in advance!
The @Resource annotation is used to identify a class, field, or method that upon initialization, the resource will be injected. For a class-based @Resource, the "resource is looked up by the application at runtime".
xml from it, firstly we need to add resource folder to classpath and then read it. Here we used getClass(). getResource(), this method is trying to read our file example. xml from the root "/" path of the classpath.
I have checked your code.If you would like to load a file from classpath in a Spring Boot JAR, then you have to use the resource.getInputStream()
rather than resource.getFile()
.If you try to use resource.getFile()
you will receive an error, because Spring tries to access a file system path, but it can not access a path in your JAR.
detail as below:
https://smarterco.de/java-load-file-classpath-spring-boot/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With