【问题标题】:Load resource in a jar file Java Spring在 jar 文件中加载资源 Java Spring
【发布时间】:2018-03-26 18:20:29
【问题描述】:

我要加载位于以下位置的 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 中正确加载文件。

【问题讨论】:

  • 为什么要手动加载它而不是使用TemplateResolver 或注入它(使用@Resource("classpath:email-templates/html-email.html"),会很快失败)?

标签: java spring file jar


【解决方案1】:

试试下面的代码。使用 spring classpathresource 你应该能够加载它们。只要你尝试在 spring 上下文中加载这个文件,Spring 容器就会知道它的类路径。所以它应该加载相应的文件。否则,它会尝试在文件系统中查找。

Resource resource = new ClassPathResource("email-templates/html-email.html");

我假设你的 jar 中有这些资源,检查 jar 文件中是否存在这些资源。

jar tf springboot.jar

【讨论】:

    【解决方案2】:

    在 jar 文件中加载资源 Java Spring

    试试下面的代码。

    ClassLoader classloader = Thread.currentThread().getContextClassLoader();
    InputStream is = classloader.getResourceAsStream("email-templates/html-email.html");
    

    /email-templates/html-email.html

    如果上述方法不起作用,请访问此帮助完整链接 Java ClassLoaderUtil

    【讨论】:

    猜你喜欢
    • 2015-11-16
    • 2015-05-03
    • 2018-06-03
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多