在jar文件Java Spring中加载资源

时间:2017-10-14 22:09:18

标签: java spring file jar

我想加载一个位于以下位置的html文件:

enter image description here

在独立的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中正确加载文件。

2 个答案:

答案 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