使用class.getClassLoader().getResource("")的注意事项

来源:互联网 发布:快消品集团网络商学院 编辑:程序博客网 时间:2024/04/28 11:40


前几天在写一个C/S的小工具,使用class.getClassLoader().getResource("")时,发现一个问题,程序如下:

 

package com.syj;

public class ClassLoaderTest {
    
public static void main(String[] args){
        String classPath1 
= ClassLoaderTest.class.getClassLoader().getResource(
                
"config.ini").toString();
        System.out.println(
"classPath1:" + classPath1);
        String classPath2 
= ClassLoaderTest.class.getClassLoader().getResource(
                
"").toString();
        System.out.println(
"classPath2:" + classPath2);
    }
}

打成jar包test.jar后
执行
java -jar test.jar
pause

执行结果
classPath1:jar:file:/D:/DEV.WORK/works_acnt/Test/test.jar!/config
Exception in thread "main" java.lang.NullPointerException
        at com.syj.ClassLoaderTest.main(ClassLoaderTest.java:9)

执行
set CLASSPATH=%CLASSPATH%;test.jar;
java com.syj.ClassLoaderTest
pause

执行结果
classPath1:file:/D:/DEV.WORK/works_acnt/Test/config.ini
classPath2:file:/D:/DEV.WORK/works_acnt/Test/


不难发现当使用java -jar test.jar启动程序时可以getResource一个具体文件是没有问题的但是getResource("")就会出问题,要把这个jar放

到ClassPath里面才行
可见用java -jar test.jar启动程序时程序并不知道当前这个test.jar的绝对路径

原创粉丝点击