使用class.getClassLoader().getResource("")的注意事项
来源:互联网 发布:手机淘宝联盟怎么领券 编辑:程序博客网 时间:2024/06/02 18:28
使用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的绝对路径
经常希望通过ClassName.class.getClassLoader().getResourceAsStream(““)来取得properties文件.通常:ClassName.class.getClassLoader().getResourceAsStream(““)取得的是WEB-INF的下级目录,比如ClassName.class.getClassLoader().getResourceAsStream(“db.properties“).在Tomcat中,可以通过增加”../”来取得上层目录,即WEB-INF目录,这样就可以把properties放在WEB-INF中统一管理。但是WLS不识别”../”。
另外一种土办法,就是不返回classLoader,直接ClassName.class.getResourceAsStream()。然后通过多个”../”(小于6个)来返回相应的上级目录。
当然,如果类扩展了HttpServlet,可以通过getServletContext().getRealPath("/")来取得Web部署目录的绝对路径。
- 使用class.getClassLoader().getResource("")的注意事项
- 使用class.getClassLoader().getResource("")的注意事项
- class.getResource与class.getClassLoader().getResource使用
- Class.getClassLoader().getResource() Class.getResource()
- class.getClassLoader().getResource()和class.getResource()的不同
- 关于Class.getResource与Class.getClassLoader.getResource的区别
- class.getClassLoader().getResource()和class.getResource()的不同
- class.getClassLoader().getResource(xxx).getpath()的使用方法
- Class.getResource与Class.getClassLoader.getResource
- Class.getResource与Class.getClassLoader.getResource
- class.getResource()与class.getClassLoader().getResource()
- class.getResource与class.getClassLoader.getResource
- Class.getResource与Class.getClassLoader.getResource
- Class.getResource与Class.getClassLoader.getResource
- Class.getResource与Class.getClassLoader.getResource
- Class.getResource与Class.getClassLoader.getResource
- 使用getClassLoader().getResource()需注意的问题
- Java中xxx.class.getResource和xxx.class.getClassLoader().getResource()的区别
- Linux下使用od查看文件
- Android开发之手机铃声代码实现
- Razor视图下ViewData传递html被转义
- 用GDB调试DirectFB
- 在沙盒中存取图片
- 使用class.getClassLoader().getResource("")的注意事项
- 20120223
- POJ 2034 Anti-prime Sequences
- 如何重写的 MFC 控件容器接口方法,在 Visual c + + 中的几个默认行为
- 写代码如坐禅:你是哪一类程序员?
- 软件人员推荐书目
- 闲话&项目管理
- java 基础语法
- 心态决定成败