关于classpath的理解和使用

来源:互联网 发布:陈乔恩长相知乎 编辑:程序博客网 时间:2024/05/22 01:45

什么是classpath路径?

所谓的classpath指的就是编译后的class文件所在的目录,即为classpath路径。
上图是一个eclipse项目工程的结构,target目录是编译输出目录,打开target目录结构如下:
其中classes目录即为classpath路径,对应于项目源码中的resources目录。


如何加载classpath路径下的资源?

java中提供了ClassLoader类用于加载classpath下的资源。ClassLoader对象中的getResourceAsStream(String name)可以将资源以流的形式加载进内存中。


ClassLoader的使用

ClassLoader对象的创建方式

方式一:使用ClassLoader类的静态方法getSystemClassLoader()获取。
ClassLoader classLoader = ClassLoader.getSystemClassLoader();
方式二:通过当前的Thread线程对象获取。
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();

方式三:使用Class字节码对象的getClassLoader()获取。
public class A {public void getClassLoader() {ClassLoader classLoader = this.getClass().getClassLoader();}}

ClassLoader读取资源

/** * 读取classpath下的资源文件 */@Testpublic void test1() throws Exception {ClassLoader classLoader = Thread.currentThread().getContextClassLoader();InputStream in = classLoader.getResourceAsStream("jdbc.properties");Properties prop = new Properties();prop.load(in);prop.entrySet().forEach(System.out::println);}

/** * 读取当前类路径下的资源文件 */@Testpublic void test2() throws Exception {// 获取当前类在classpath下的路径String packageName = this.getClass().getPackage().getName().replaceAll("\\.", "/");ClassLoader loader = this.getClass().getClassLoader();InputStream in = loader.getResourceAsStream(packageName + "/Jdbc.properties");Properties prop = new Properties();prop.load(in);prop.entrySet().forEach(System.out::println);}














阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 路由器设置一半怎么办 电脑复制不了怎么办 新品权重低怎么办 u盘太慢怎么办 照片无缩略图怎么办 相册分享过慢怎么办 苹果相册关闭怎么办 缩略图删了怎么办 cdr看不到图怎么办 cdrX4没有缩略图怎么办 无缩略图怎么办 文件复制出错怎么办 mac无法拷贝怎么办 文件复制不了怎么办 硬盘速度慢怎么办 跳高时脚扭到了怎么办 硬盘要格式化怎么办 硬盘需要格式化怎么办 硬盘提示格式化怎么办 硬盘格式化不了怎么办 硬盘显示格式化怎么办 硬盘要求格式化怎么办 光盘格式化保护怎么办 win7关机不了怎么办 win8系统崩溃怎么办 win10快捷键失灵怎么办 华为浏览器慢怎么办 手机卡网络限速怎么办 oppowifi网速慢怎么办 oppo上网慢怎么办 iphonewifi太慢怎么办 电视网速慢怎么办 电脑安装内存不足怎么办 欠公款怎么办 肺部灰尘怎么办 付款方式失效怎么办 忘记银行卡账号怎么办 银行汇票过期怎么办 手上有晒斑怎么办 银行客户号怎么办 疫苗接种发烧怎么办