zoukankan      html  css  js  c++  java
  • Java中jar包获取资源文件的方式

    方式一:  this.getClass().getClassLoader().getResourceAsStream(String name)

           首先调用对象的getClass()方法是获得对象当前的类类型,这部分数据存在方法区,而后在类类型上调用getClassLoader()方法是得到当前类型的类加载器,我们知道在Java中所有的类都是通过加载器加载到虚拟机中的,而且类加载器之间存在父子关系,就是子知道父,父不知道子,这样不同的子加载的类型之间是无法访问的(虽然它们都被放在方法区中),所以在这里通过当前类的加载器来加载资源也就是保证是和类类型同一个加载器加载的。最后调用类加载器的getResourceAsStream()方法来加载资源。

    这里的 name 不能带“/”,否则会抛空指针

    方式二:  this.class.getResourceAsStream(String name)

           若name不以“/”开头时,默认是从此类所在的包下取资源;以“/”开头时,则是从classpath根下获取。

    示例

         如果maven项目打成 jar包不要使用 xxx.calss.getResource(path)或 xxx.calss.getClassLoader().getResource(path) 获取相应的资源文件,会报错。尽量使用stream流的方式操作资源文件

     

    扩展:  spring中classpath的理解

          maven项目编译后,java文件会被编译成class文件放在classes文件夹下;resource下的资源文件也会被放到classes文件夹下。

    本文部分转自:https://www.cnblogs.com/yadongliang/p/7920053.html

  • 相关阅读:
    Xcode 5.1 更新后插件不能用
    adplus 抓取dump
    压力测试工具 Tinyget
    mssql server提示无权限
    windbg sos加载相关
    oracle中文显示为问号
    菜鸟成长进阶之——fiddler使用总结
    windbg学习进阶之——windbg字段名及其意义
    windbg学习进阶之——dump分析常用命令收集
    windbg学习进阶之——windbg环境变量配置
  • 原文地址:https://www.cnblogs.com/huangchangpei/p/13050553.html
Copyright © 2011-2022 走看看