我在某个位置有一个文件
/resources/static/fcm-admin
它的绝对路径是
/home/jitu/project-name/src/main/resources/static/fcm-admin
我尝试通过以下方式访问此文件
val file = ResourceUtils.getFile("classpath:fcm-admin")
这给我一个错误
java.io.FileNotFoundException: class path resource [fcm-admin] cannot be resolved to an absolute file path because it does not exist
我试图以各种方式访问文件,但是它不起作用。 我只想访问文件fcm-admin
,而不给出完整的绝对路径。一切都会有所帮助
编辑:
因此,我可以使用以下代码在本地访问文件-
val file = ResourceUtils.getFile("classpath:static/fcm-admin")
但是我无法在生产服务器上访问它。而且我正处于例外之下
class path resource [static/fcm-admin] cannot be resolved to an absolute file path because it does not reside in the file system: jar:file:/var/app/current/application.jar!/BOOT-INF/classes!/static/apple-app-site-association
答案 0 :(得分:1)
您忘记在路径中添加静态
val file = ResourceUtils.getFile("classpath:static/fcm-admin")
由于评论而编辑
从Classpath加载文件:
val file = this.javaClass.classLoader.getResource("/static/fcm-admin").file;
使用类加载器加载资源时,资源将从类路径的根目录开始。
答案 1 :(得分:0)
本地服务器可以与ClassPathResource一起使用,但在生产中将失败
要解决生产中的错误,请将代码更改为
import org.springframework.core.io.ResourceLoader;
import java.io.InputStream;
import org.springframework.core.io.InputStreamSource;
import org.springframework.core.io.ByteArrayResource;
import org.apache.commons.io.IOUtils;
@Autowired
private ResourceLoader resourceLoader;
InputStream logoFileStrem = resourceLoader.getResource("classpath:static/images/image.png").getInputStream();
InputStreamSource byteArrayResource = new ByteArrayResource(org.apache.commons.io.IOUtils.toByteArray(logoFileStrem));