孙钰佳的博客

转载本BLOG的原创文章请注明作者和出处,谢谢 !

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


前几天在写一个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的绝对路径

阅读更多
个人分类: J2SE
下一篇JavaScript操作table
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭