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

原创 2007年09月24日 13:25:00


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

相关文章推荐

class.getClassLoader().getResource()和class.getResource()的不同

1.两者都是读取配置文件的方式。前者是正规的实现,即先由class获得classLoader,再由classLoader获得文件。后者是封装的一个方法,二者的区别在哪呢?在参数上。2.二者的参数类型都...

使用getClassLoader().getResource()需注意的问题

在Java WEB项目编程时,往往通过classLoader获取Jar包的物理路径,但是可能会存在2个问题:URL地址解析错误,不能正确获取Jar文件路径。 1、URL地址解析错误 见下例,通...

java文件路径问题及getResource和getClassLoader().getResource的区别

我们经常在java的io操作中读取文件,先看一个场景: 这样是读不到这个file文件的,会发生filenotfoundexception 如果我把文件放到了src/main/java下呢,还是会发...

class.getClassLoader().getResource(xxx).getpath()的使用方法

首先,调用对象的getClass()方法是获得对象当前的类类型,这部分数据存在方法区中,而后在类类型上调用getClassLoader()方法是得到当前类型的类加载器,我们知道在Java中所有的类都是...

Java class.getClassLoader().getResource("")获取资源路径

在开发中经常需要获取资源文件路径,例如读写配置文件等。Java也提供很多方法来获取这些路径,下面就几种常用到的作一下讨论区分: 1、xxx.class.getClassLoader().getRes...

Vue.js使用v-bind绑定class时的注意事项

使用Vue.js中V-bind指令来绑定class和style时,Vue.js对其进行了增强。表达式结果出了字符串之外,还可以是对象或者数组。这里自己对其进行了测试,发现有一下的问题(代码中表明): ...
  • farYang
  • farYang
  • 2016年11月05日 00:33
  • 13070

关于unity结构体struct和类class的使用细节和注意事项!

今天在项目中用到了结构体来储存一些不同类型的数据,结构体目的是在任意地方调用和修改其中的数据信息(相信这里对结构体比较了解的人已经发现问题所在了)。当我决定用结构体的那一刻,我就已经走上了一条错误的道...

Class.getResource与Class.getClassLoader.getResource

Class.getResource与Class.getClassLoader.getResource 这两个getResource()是使用当前ClassLoader加载资源(即资源...

在获取文件资源时class.getResource()和class.getClassLoader().getResource()的区别

在获取文件资源时class.getResource()和class.getClassLoader().getResource()的区别

将 Spring boot 项目打成可执行Jar包,及相关注意事项(main-class、缺少 xsd、重复打包依赖)

最近在看 spring boot 的东西,觉得很方便,很好用。对于一个简单的REST服务,都不要自己部署Tomcat了,直接在 IDE 里 run 一个包含 main 函数的主类就可以了。但是,转念一...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用class.getClassLoader().getResource("")的注意事项
举报原因:
原因补充:

(最多只允许输入30个字)