我想加载一个位于以下位置的html文件:
在独立的spring boot
jar应用程序中使用。
此方法会导致FileSystemNotFoundException
new InputStreamReader(
getClass().getResourceAsStream("/email-templates/html-email.html")
)
使用
@Autowired
private ResourceLoader resourceLoader;
...
resourceLoader.getResource("classpath:email-templates/html-email.html");
导致NullPointerException
。
请指出如何在spring boot jar中正确加载文件。
答案 0 :(得分:1)
在jar文件Java Spring中加载资源
尝试以下代码。
ClassLoader classloader = Thread.currentThread().getContextClassLoader();
InputStream is = classloader.getResourceAsStream("email-templates/html-email.html");
/email-templates/html-email.html
如果以上操作不起作用,请访问此帮助完整链接 Java ClassLoaderUtil
答案 1 :(得分:1)
尝试以下代码。使用spring classpathresource,您应该能够加载它们。只要您尝试在spring上下文中加载此文件,Spring容器就会知道它的类路径。因此它应该加载相应的文件。否则,它会尝试在文件系统中查找。
Resource resource = new ClassPathResource("email-templates/html-email.html");
我假设您的jar中有这些资源,请检查jar文件中是否存在这些资源。
jar tf springboot.jar