- 浏览: 464754 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
chexiazi:
一样的xml代码 报这个错 <ns1:XMLFault ...
CXF 通过用户名和密码进行验证 -
di1984HIT:
谢谢啊 ~~~
通过JavaCompiler进行编译java文件(转载) -
aa00aa00:
'%${userName}%' 这种是可以的,是可以模糊查询的 ...
mybatis 模糊查询 -
一棵杨柳的地盘:
我把你的代码不了一遍 但是汇报错首先:static { ...
CXF 通过用户名和密码进行验证 -
shangmin1990:
转 IntelliJ IDEA 编辑器生成 Hibernate 实体映射文件
本文的目的重温ClassLoader、ContextClassLoader加载使用,展示可能忽略的东西,虽然内容不是多么复杂,但是出现一些问题而不明白原因时,会让人"抓狂"。
执行,打印内容关键罗列如下:
从加载路径可以看出
(1)ConfigurationPathTest.class.getResource("")是指明了具体包路径
而ClassLoader.getResource("")指明了classpath路径
(2)同样是从classpath加载,写法有一点点区别(要小心)
ConfigurationPathTest.class.getResource("/login.conf")
ClassLoader.getResource("login.conf")
(3)getResource()方法会首先从classpath路径去找要加载的文件;如果不存在,再去jar包加载;如果都没有,返回null
(4)getResources()方法同时加载classpath和jar内的内容,如:ClassLoader.getResources("common/conf/configuration.xml");
(如果class和jar中都有此配置文件,使用不当会造成困惑:两个都加载了,到底哪个是在使用的;如果出错,哪个导致了出错)
- public class ConfigurationPathTest {
- public static void main(String[] arr){
- ClassLoader cload = Thread.currentThread().getContextClassLoader();
- System.out.println("------------------getContextClassLoader加载指定的common/conf/configuration.xml配置文件---------------------"+cload.getResource("common/conf/configuration.xml"));
- //StandaloneContainer exo.kernel.container-2.1.2.jar
- System.out.println("---------------------getClassLoader加载指定的common/conf/configuration.xml配置文件--------------------------------:"+ConfigurationPathTest.class.getClassLoader().getResource("common/conf/configuration.xml"));
- //jar:file:/D:/workspace/ExoDemo/lib/exo.kernel.container-2.1.2.jar!/conf/configuration.xml
- //-----------------------具体类路径和classpath路径--------------------------//
- System.out.println("-------------getClassLoader加载classpath----------------"+ConfigurationPathTest.class.getResource(""));
- System.out.println("-------------getContextClassLoader加载classpath----------------"+cload.getResource(""));
- System.out.println("-------------System classpath----------------"+ConfigurationPathTest.class.getClassLoader().getResource(""));
- //-----------------------优先从classpath加载,然后从lib的jar包加载--------------------------//
- System.out.println("-------------第二次 getClassLoader加载classpath----------------"+ConfigurationPathTest.class.getResource("/login.conf"));
- System.out.println("-------------第二次getContextClassLoader加载classpath ----------------"+cload.getResource("login.conf"));
- System.out.println("-------------第二次System classpath ----------------"+ConfigurationPathTest.class.getClassLoader().getResource("login.conf"));
- System.out.println("-------------第3次getClassLoader加载classpath----------------"+ConfigurationPathTest.class.getResource("/login_prev.conf"));
- System.out.println("-------------第3次getContextClassLoader加载classpath----------------"+cload.getResource("login_prev.conf"));
- System.out.println("-------------第3次System classpath----------------"+ConfigurationPathTest.class.getClassLoader().getResource("login_prev.conf"));
- }
- }
public class ConfigurationPathTest { public static void main(String[] arr){ ClassLoader cload = Thread.currentThread().getContextClassLoader(); System.out.println("------------------getContextClassLoader加载指定的common/conf/configuration.xml配置文件---------------------"+cload.getResource("common/conf/configuration.xml")); //StandaloneContainer exo.kernel.container-2.1.2.jar System.out.println("---------------------getClassLoader加载指定的common/conf/configuration.xml配置文件--------------------------------:"+ConfigurationPathTest.class.getClassLoader().getResource("common/conf/configuration.xml")); //jar:file:/D:/workspace/ExoDemo/lib/exo.kernel.container-2.1.2.jar!/conf/configuration.xml //-----------------------具体类路径和classpath路径--------------------------// System.out.println("-------------getClassLoader加载classpath----------------"+ConfigurationPathTest.class.getResource("")); System.out.println("-------------getContextClassLoader加载classpath----------------"+cload.getResource("")); System.out.println("-------------System classpath----------------"+ConfigurationPathTest.class.getClassLoader().getResource("")); //-----------------------优先从classpath加载,然后从lib的jar包加载--------------------------// System.out.println("-------------第二次 getClassLoader加载classpath----------------"+ConfigurationPathTest.class.getResource("/login.conf")); System.out.println("-------------第二次getContextClassLoader加载classpath ----------------"+cload.getResource("login.conf")); System.out.println("-------------第二次System classpath ----------------"+ConfigurationPathTest.class.getClassLoader().getResource("login.conf")); System.out.println("-------------第3次getClassLoader加载classpath----------------"+ConfigurationPathTest.class.getResource("/login_prev.conf")); System.out.println("-------------第3次getContextClassLoader加载classpath----------------"+cload.getResource("login_prev.conf")); System.out.println("-------------第3次System classpath----------------"+ConfigurationPathTest.class.getClassLoader().getResource("login_prev.conf")); } }
执行,打印内容关键罗列如下:
- file:/D:/workspace/UCMTest/bin/com/huaweisymantec/ucm/jcr/api/
- file:/D:/workspace/UCMTest/bin/
- file:/D:/workspace/UCMTest/bin/
- file:/D:/workspace/UCMTest/bin/login.conf
- file:/D:/workspace/UCMTest/bin/login.conf
- file:/D:/workspace/UCMTest/bin/login.conf
- jar:file:/D:/workspace/UCMTest/lib/com.huaweisymantec.ucm-1.0.jar!/login_prev.conf
- jar:file:/D:/workspace/UCMTest/lib/com.huaweisymantec.ucm-1.0.jar!/login_prev.conf
- jar:file:/D:/workspace/UCMTest/lib/com.huaweisymantec.ucm-1.0.jar!/login_prev.conf
file:/D:/workspace/UCMTest/bin/com/huaweisymantec/ucm/jcr/api/ file:/D:/workspace/UCMTest/bin/ file:/D:/workspace/UCMTest/bin/ file:/D:/workspace/UCMTest/bin/login.conf file:/D:/workspace/UCMTest/bin/login.conf file:/D:/workspace/UCMTest/bin/login.conf jar:file:/D:/workspace/UCMTest/lib/com.huaweisymantec.ucm-1.0.jar!/login_prev.conf jar:file:/D:/workspace/UCMTest/lib/com.huaweisymantec.ucm-1.0.jar!/login_prev.conf jar:file:/D:/workspace/UCMTest/lib/com.huaweisymantec.ucm-1.0.jar!/login_prev.conf
从加载路径可以看出
(1)ConfigurationPathTest.class.getResource("")是指明了具体包路径
而ClassLoader.getResource("")指明了classpath路径
(2)同样是从classpath加载,写法有一点点区别(要小心)
ConfigurationPathTest.class.getResource("/login.conf")
ClassLoader.getResource("login.conf")
(3)getResource()方法会首先从classpath路径去找要加载的文件;如果不存在,再去jar包加载;如果都没有,返回null
(4)getResources()方法同时加载classpath和jar内的内容,如:ClassLoader.getResources("common/conf/configuration.xml");
(如果class和jar中都有此配置文件,使用不当会造成困惑:两个都加载了,到底哪个是在使用的;如果出错,哪个导致了出错)
发表评论
-
java 位运算总结
2018-10-23 11:14 0<div class="iteye-blog- ... -
java sort 排序中的自然序排序总结
2018-10-23 11:07 5779<div class="iteye-blo ... -
Java内存分析工具
2012-11-24 11:16 2237Java运行时数据区包含:Method area, heap, ... -
转 StringUtils.isBlank()函数(分享一下)
2012-02-15 10:23 2958StringUtils的isBlank与isEmply ... -
jquery 使用ajax 提交整个表单的数据
2012-01-06 14:52 5889在使用Struts开发项目的时候发现很爽的一件事就是可以不使用 ... -
struts2 通配符
2011-12-31 16:25 1258在使用struts2时,如果想定义action的话可以这样做 ... -
Maven Web项目部署到Tomcat下
2011-12-30 17:28 19507通过Maven来搭建项目是 ... -
velocity与servlet的整合
2011-12-28 21:07 1421第一天学习velocity,参考别人的blog写了一个与Se ... -
ibatis 与spring3整合
2011-12-28 13:01 5701spring与ibates整合,使用 ... -
ibatis 入门
2011-12-28 12:48 1250昨天学习了一下ibatis ... -
转 JTA简介
2011-12-26 17:47 1044Java Transaction API(Java事务 ... -
转 IntelliJ IDEA 编辑器生成 Hibernate 实体映射文件
2011-12-23 16:03 23334很多人不知道怎么用 IntelliJ IDEA 编辑器 ... -
转 IntelliJ IDEA 使用基础篇 Java IDE编辑器
2011-12-23 15:02 8489IntelliJ IDE ... -
转在CXF中用JAXB数据绑定支持Map类型
2011-12-05 16:38 5191一些java类型不能自然映射成xml,例如,HashMap ... -
cxf wsdltojava 构造方法报错
2011-12-05 14:23 1296I'm marking this as "n ... -
(转)Struts2学习笔记--Internationalization
2011-11-21 18:13 1268Struts2 的国际化 ======== ... -
单例模式
2011-11-18 20:47 984单例模式(SINGLETON):单例模式确保某一个类只有一个实 ... -
类加载的顺序
2011-11-17 21:40 1160写道 package com.wang; public cl ... -
socket实现客户端与客户端通信
2011-11-17 19:34 3018最近闲来无聊,看了一下socket通信,实现了一个最简版的客户 ... -
接口设计的 11 种原则
2011-05-02 21:02 27137种设计坏味道 1.僵化性: 很难对系统进行改动,因为每个改动 ...
相关推荐
ClassLoader类加载器讲解,理解JAVA类加载机制
ClassLoader类加载机制和原理详解
【图解版】深入分析ClassLoader类加载工作机制,从原理到JVM的装载过程,详情分析了ClassLoader加载类以及自定义类加载器的过程,不可用于商业用途,如有版权问题,请联系删除!
通过对ClassLoader中两个子类加载dex,来熟悉安卓中的apk加载流程
NULL 博文链接:https://ldbjakyo.iteye.com/blog/1046984
ClassLoader的API使用和自定义
类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的。Java ...
ClassLoader动态加载类 简单示例 包装tank.test; 导入java.util.Scanner; 导入tank.classloader.ClassLoaderManager; 导入tank.classloader.MyClassLoaderManager; 导入tank.classloader.SystemClassLoaderManager...
Java 虚拟机中ClassLoader 相关简介 双亲委托机制 Android 中ClassLoader 简介
该电子书详细介绍了java虚拟机类加载机制,对于深入理解jvm工作原理有很好的帮助作用,对于初学java,有一定工作经验的小伙伴来说是一本提高自身java素养,夯实自己java基本技能的“葵花宝典”。
1. ClassLoader(类加载机制) 3. findLoadedClass (查找JVM已经加载过的类) 4. defineClass (定义一个Java
java自定义类加载classloader文档,包括代码,以及详细的原理及过程
让Java支持热加载是个不错的想法。如何做到的呢? 1. 定义好接口和实现类 2. 让代理类通过反射的方式调用实现类,对外暴露的是代理类。 3. 自定义URLClassLoader。检查实现类.class文件的...Java自定义classloader;
ClassLoader类加载器负责读取 Java 字节代码,并转换成 java.lang.Class类的一个实例。从而只有class文件被载入到了内存之后,才能被其程序所引用。所以ClassLoader就是用来动态加载class文件到内存当中用的。 ...
包括commons-logging commons-beanutils commons-lang ezmorph json-lib-2.4-jdk15 commons-collections-3.2.1的jar包,可以解决 org/apache/commons/lang/exception/NestableRuntimeException的问题
Java的类加载机制:加载,连接,初始化。JAVA类加载器: Bootstrap ClassLoader : 根类加载器, Extension ClassLoader: 扩展类加载器, System ClassLoader : 系统类加载器, Java反射
本篇文章主要给大家讲述了Java中ClassLoader类加载的原理以及用法总结,一起学习下。
下面小编就为大家带来一篇classloader类加载器_基于java类的加载方式详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
自定义classloader的使用
ClassLoader运行机制 自己写的ClassLoader运行机制 自己写的ClassLoader运行机制 自己写的ClassLoader运行机制 自己写的ClassLoader运行机制 自己写的