简体   繁体   中英

Classpath resource not resolving in spring boot

I am using spring boot and I have a file in resources folder. I am using digital ocean machine and when i run the application using java -jar mywebapp.war, I am unable to access the file from classpath. I am accessing it using following standard syntax:

File file = new ClassPathResource("mfile").getFile();

I am getting error that class path resource cannot be resolved to absolute path. The problem I see is that it is showing the path with ! marks as follows:

/home/u/webapp/target/mywebapp.war!/WEB-INF/classess!/mfile

What am I doing wrong here?

Since you're running it with java -jar you should build it as a JAR file instead of WAR.

Read more: https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html

Get file does not work while running as jar.you should get it as a resource Stream.

ClassLoader classLoader = getClass().getClassLoader();
        InputStream inputStream = classLoader.getResourceAsStream("/file.xsd") ;
        File file = File.createTempFile("file", ".xsd");
        try {
            FileUtils.copyInputStreamToFile(inputStream, file);
        } finally {
            IOUtils.closeQuietly(inputStream);

it gets you a file. if the requirement is to get as a file.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM