class.getResource(String res)的使用
该方法是根据类的相对路径来访问资源的。如果该类没有package,则类的根路径是就是当前路径;如果该类有package,则类的根路径是定级包所在的路径。例如:
Drawing没有定义package,Drawing.class与images在相同路径下这样访问:当前路径就是根路径
Image img = (new ImageIcon(Drawing.class.getResource("images/title.gif"))).getImage();
Image img = (new ImageIcon(Drawing.class.getResource("./images/title.gif"))).getImage();
Image img = (new ImageIcon(Drawing.class.getResource("/images/title.gif"))).getImage();
Drawing定义package myjava.gui,Drawing.class位于myjava/gui目录,myjava与images在相同路径下这样访问:
Image img = (new ImageIcon(Drawing.class.getResource("/images/title.gif"))).getImage();(实际中建议使用该方式)
Image img = (new ImageIcon(Drawing.class.getResource("../../images/title.gif"))).getImage();
===================================
Class.getResource()方法实际上委托装入该类的类装载器,返回一个用于读取类文件资源的URL;或者,当指定的类名字不能在当前的classpath中找到时,Class.getResource()方法返回null。
===================================
可以看到,Class的getResource方法,实际上是靠调入这个类的ClassLoader的getResourc
e方法来实现的,如果调入这个类的ClassLoader是原生的BootStrap ClassLoader,这个Cl
assLoader是用C++写成的,在Java中没有相对应的物件。这时候的实现靠的是ClassLoader
的静态方法getSystemResource。
只有当使用Class类的getResource方法的时候,才会有下面介绍的那种算法。
这种算法就是说,
如果你指定的路径以/开头,那么就是从ClassPath的起点开始寻找这个路径。
如果直接以某个名字开头,那么就是从当前包名的目录为起点开始寻找。
所以大家如果用过hibernate就知道,有些表示类到数据库表的映射关系的xml文件就和这
个类的class文件放在一起,这样它就直接使用这个类.class.getResource方法来得到这个
xml文件。
而在使用ClassLoader的getResource方法的时候,永远是以Classpath为直接起点开始寻找
资源的。不用担心从什么包开始寻找的问题。
用Class.getResource不加/就是从当前包开始找,用ClassLoader.getResource不加/就是
直接从Classpath的起点开始寻找。
相关推荐
并且只有调用了newInstance()方法采用调用构造函数,创建类的对象看下Class.forName()源码//Class.forName(String c
破解java加密的rt.jar,在classloader植入破解代码,默认输出到c:/TEMP/classes/目录。使用方法:只要下载本rt.jar,然后替换掉jdk1.8.0_25\jre\lib目录下的rt.jar。然后运行你需要破解的java程序即可,如果你的java...
破解java加密的ClassLoader.java,在classloader植入破解代码
Java 虚拟机中ClassLoader 相关简介 双亲委托机制 Android 中ClassLoader 简介
at java.lang.ClassLoader.loadClass(ClassLoader.java:667) at com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:119) at java.lang.ClassLoader.loadClass(ClassLoader.java:650) at ...
在Java的反射中,Class.forName和ClassLoader的区别共4页.pdf.zip
at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang....
web类加载器的小例子,可以供大家参考,谢谢!
at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at com.trs.gateway.commons.hive.HiveFeature.getConnection(HiveFeature.java:55) ... 8 more
jar包,官方版本,自测可用
at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at com.trs.gateway.commons.hive.HiveFeature.getConnection(HiveFeature.java:55) ... 8 more
java链接sqlserver数据库包如下错误时: ... at java.net.URLClassLoader.findClass(Unknown ... at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) 添加sqljdbc4-2.0包即可
Exceptionin thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/... at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) ...9 more
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang....
classloader 加密解密应用程序 ,反编译class
[CLASS] org.apache.tools.ant.Main org.apache.tools.ant.Task org.apache.tools.bzip2.CRC org.apache.tools.ant.Target org.apache.tools.ant.Project org.apache.tools.zip.ZipFile org.apache.tools.zip...
检查实现类.class文件的修改时间,如果是更新的.class文件则重新加载该实现类的class。 4. 调用方法前,先获取最新的代理类,然后调用代理类的方法。 这样,每次调用代理类中的方法,都会先检查实现类的class文件...
//只加载一个绝对匹配Resource,且通过ResourceLoader.getResource进行加载 Resource[] resources = resolver.getResources("classpath:META-INF/INDEX.LIST"); Assert.assertEquals(1, resources.length); //...
classloader 源码,自定义classloader