java打成jar后,获取resources下的文件资源问题及解决

 更新时间:2026年05月11日 10:03:35   作者:锦鲤飞上天  
作者在写代码时遇到一个问题:在将项目打包成jar包后,无法通过常规方式获取resources文件夹下的资源,通过分析原因,作者找到了一种新的解决方案,即通过类加载器获取jar包内的资源,此方式返回后的资源以文件流的形式返回,作者将其转换为了byte[]的形式使用

最近在写代码的时候发现

通过以下两种方式获取resources文件下的资源时,在编辑器里运行是能获取到的,打成jar包以后就获取不到了,后来发现原来项目打成jar包以后是一个文件,而不是一个文件夹,所以通过这种方式是获取不到resources文件下的资源的。

//1.通过ClassPathResource 类获取
ClassPathResource resource = new ClassPathResource("pdfTemplates/logo.jpg");
//2.通过ResourceUtils获取
ResourceUtils.getFile("classpath:").getPath();

怎么办呢?

我们可以通过下面的这种方式来获取打包后的resources下的资源。

		//读取resources的文件,打成jar包后不能直接读取,需要通过这种方式读取
		//这个是直接取的resources下的文件,所以直接写resources下的相对路径就行,不用加classpath:
        InputStream is = this.getClass().getClassLoader().getResourceAsStream("pdfTemplates/logo.jpg");

我这是获取了一个图片资源,这种获取方式获取出来的是文件流,可以转成你们想要的方式去直接使用,我是转成了byte[]。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java Socket编程实例(四)- NIO TCP实践

    Java Socket编程实例(四)- NIO TCP实践

    这篇文章主要讲解Java Socket编程中NIO TCP的实例,希望能给大家做一个参考。
    2016-06-06
  • idea编写java程序详细图文步骤

    idea编写java程序详细图文步骤

    这篇文章主要给大家介绍了关于idea编写java程序的详细图文步骤,IDEA是用于Java语言开发的集成环境,它是业界公认的目前用于Java程序开发最好的工具,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • Java实现字符数组全排列的方法

    Java实现字符数组全排列的方法

    这篇文章主要介绍了Java实现字符数组全排列的方法,涉及Java针对字符数组的遍历及排序算法的实现技巧,需要的朋友可以参考下
    2015-12-12
  • java常用工具类 Reflect反射工具类、String字符串工具类

    java常用工具类 Reflect反射工具类、String字符串工具类

    这篇文章主要为大家详细介绍了java常用工具类,包括Reflect反射工具类、String字符串工具类,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • 使用redis的increment()方法实现计数器功能案例

    使用redis的increment()方法实现计数器功能案例

    这篇文章主要介绍了使用redis的increment()方法实现计数器功能案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • java制作仿微信录制小视频控件

    java制作仿微信录制小视频控件

    这篇文章主要介绍了java制作仿微信录制小视频控件的代码,录制小视频非常方便,有需要的小伙伴可以参考下。
    2015-04-04
  • Maven清理java项目中未使用到 jar 依赖包的方法

    Maven清理java项目中未使用到 jar 依赖包的方法

    本文主要介绍了Maven清理java项目中未使用到 jar 依赖包的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02
  • java线程池工作队列饱和策略代码示例

    java线程池工作队列饱和策略代码示例

    这篇文章主要介绍了java线程池工作队列饱和策略代码示例,涉及线程池的简单介绍,工作队列饱和策略的分析及代码示例,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • JDBC如何通过SSL方式连接MySQL

    JDBC如何通过SSL方式连接MySQL

    文章介绍了如何配置MySQL以支持SSL连接,并通过JDBC进行安全连接,主要内容包括查看MySQL SSL支持、创建SSL连接用户、配置用户是否强制使用SSL、JDBC配置导入证书以及使用Go编写一个简单的HTTP文件服务器来提供SSL证书
    2025-02-02
  • JDBC 程序的常见错误及调试方法

    JDBC 程序的常见错误及调试方法

    本文是《Java Web开发教程——入门与提高篇(JSP+Servlet)》一书《第9章 JDBC技术》的补充内容。
    2009-06-06

最新评论