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

  • 相关阅读:
    metal的gpu query
    体积雾 global fog unity 及改进
    hdr rt format对颜色的影响
    unity deferred lighting
    unity linear space时 photoshop blend的正确设置
    unity linear work flow
    一些数据 bandwidth之类
    deferred rendering with msaa
    unity 显示mipmaplevel
    【转】在C#中使用SendMessage
  • 原文地址:https://www.cnblogs.com/huangchangpei/p/13050553.html
Copyright © 2011-2022 走看看