15年来,为全国50万+企业提供互联网数字化基础应用服务。
知 识
0514-86177077
9:00-17:00(工作日)
首 页
企业400电话
Hot
网站☯建设
微网小程序
商标✡知产
网络营销推广
AI电话机器人
热
彩铃©短信
增值拓展业务
新
主页
>
知识库
> 初探Java类加载机制
初探Java类加载机制
热门标签:
开封便宜外呼系统报价
商丘百应电话机器人有没有效果
电话机器人的特色和创新
地图标注人员兼职
淮南腾讯地图标注
漯河办理400电话
怎样把地图标注出来
腾讯地图标注商户改名注册入驻
黄石智能营销电销机器人效果
一、在jdk1.2以后,类加载是通过委托来完成的,这意味着如果 ClassLoader 不能找到类,它会请求父代 ClassLoader 来执行此项任务,所有 ClassLoaders 的根是系统 ClassLoader,它会以缺省方式装入类 -- 即,从本地文件系统。今天我们就来探讨一下在jvm中这些机制是怎样运行的。让我们假设有一个class字节码文件(比如Hello.class文件),那么在应用程序中,他是如何被加载进来,并形成一个类对象的呢?我们这篇文章的目的就是为了解释这个问题。
在java.lang包里有个ClassLoader类,ClassLoader 的基本目标是对类的请求提供服务。当 JVM 需要使用类时,它根据名称向 ClassLoader 请求这个类,然后 ClassLoader 试图返回一个表示这个类的 Class 对象。通过覆盖对应于这个过程不同阶段的方法,可以创建定制的 ClassLoader。其中有个loadClass(String name, boolean resolve)方法,该方法为ClassLoader的入口点,在jdk1.2以后,loadClass方法将缺省调用findClass方法,详细内容可以参考API文档,我们编写的ClassLoader主要就是为了覆盖以上两个方法。回到我们刚才的问题,怎样读进字节码文件,并把它构成一个类对象呢?在ClassLoader里有个方法,Class defineClass(String name, byte[] b, int off, int len),答案就在这里了,我们根据把class字节码文件(如Hello.class)读进一个字节数组里,byte[] b,并把它转化为Class对象,而这些数据可以来源于文件,网络等,神奇吧:)
defineClass管理 JVM 的许多复杂、神秘和倚赖于实现的方面 -- 它把字节码分析成运行时数据结构、校验有效性等等。不必担心,您无需亲自编写它。事实上,即使您想要这么做也不能覆盖它,因为它已被标记成最终的。
其他一些方法:
findSystemClass方法:从本地文件系统装入文件。它在本地文件系统中寻找类文件,如果存在,就使用 defineClass 将原始字节转换成 Class 对象,以将该文件转换成类。
findClass方法:jdk1.2以后loadClass 的缺省实现调用这个新方法。findClass 的用途包含您的 ClassLoader 的所有特殊代码,而无需要复制其它代码(例如,当专门的方法失败时,调用系统 ClassLoader)。
getSystemClassLoader: 如果覆盖 findClass 或 loadClass,getSystemClassLoader 使您能以实际 ClassLoader 对象来访问系统 ClassLoader(而不是固定的从 findSystemClass 调用它)。
getParent:为了将类请求委托给父代 ClassLoader,这个新方法允许 ClassLoader 获取它的父代 ClassLoader。当使用特殊方法,定制的 ClassLoader 不能找到类时,可以使用这种方法。
resolveClass: 可以不完全地(不带解析)装入类,也可以完全地(带解析)装入类。当编写我们自己的 loadClass 时,可以调用 resolveClass,这取决于 loadClass 的 resolve 参数的值。
findLoadedClass:充当一个缓存,当请求 loadClass 装入类时,它调用该方法来查看 ClassLoader 是否已装入这个类,这样可以避免重新装入已存在类所造成的麻烦。应首先调用该方法。
二、工作流程:
1)调用 findLoadedClass(String) 来查看是否存在已装入的类,如果没有,那么采用那种特殊的神奇方式来获取原始字节。
2)通过父类ClassLoader调用loadClass方法,如果父类ClassLoader是null,那么按缺省方式装入类,即系统ClassLoader。
3)调用findClass(String)去查找类并获取类;
4)如果loadClass 的 resolve 参数的值为true,那么调用 resolveClass 解析 Class 对象.
5)如果还没有类,返回 ClassNotFoundException。
6)否则,将类返回给调用程序。
三、一个实现了ClassLoader的例子:
/**
*CompilingClassLoader.java
*Copyright 2005-2-12
*/
import java.io.*;
public class CompilingClassLoader extends ClassLoader{
//读取一个文件的内容
private byte[] getBytes(String filename) throws IOException{
File file=new File(filename);
long len=file.length();
byte[] raw=new byte[(int)len];
FileInputStream fin=new FileInputStream(file);
int r=fin.read(raw);
if(r!=len) throw new IOException("Can't read all,"+r+"!="+len);
fin.close();
return raw;
}
private boolean compile(String javaFile) throws IOException{
System.out.println("CCL:Compiling "+javaFile+"...");
//调用系统的javac命令
Process p=Runtime.getRuntime().exec("javac "+javaFile);
try{
//其他线程都等待这个线程完成
p.waitFor();
}catch(InterruptedException ie){
System.out.println(ie);
}
int ret=p.exitValue();
return ret==0;
}
public Class loadClass(String name,boolean resovle) throws ClassNotFoundException{
Class clas=null;
clas=findLoadedClass(name);
//这里说明了包的表示
String fileStub=name.replace('.','/');
String javaFilename=fileStub+".java";
String classFilename=fileStub+".class";
File javaFile=new File(javaFilename);
File classFile=new File(classFilename);
//如果存在class文件就不编译
if(javaFile.exists()(!classFile.exists()||javaFile.lastModified()>classFile.lastModified())){
try{
if(!compile(javaFilename)||!classFile.exists()){
throw new ClassNotFoundException("ClassNotFoundExcetpion:"+javaFilename);
}
}catch(IOException ie){
throw new ClassNotFoundException(ie.toString());
}
}
try{
byte[] raw=getBytes(classFilename);
//通过读入数据来构造一个类结构,这是核心
clas=defineClass(name,raw,0,raw.length);
}catch(IOException ie){
//
}
if(clas==null){
clas=findSystemClass(name);
}
System.out.println("findSystemClass:"+clas);
if(resovle clas!=null){
resolveClass(clas);
}
if(clas==null){
throw new ClassNotFoundException(name);
}
return clas;
}
}
测试该loader:
/**
*TestRun.java
*Copyright 2005-2-11
*/
import java.lang.reflect.*;
public class TestRun{
public static void main(String[] args) throws Exception{
String progClass=args[0];
String progArgs[]=new String[args.length-1];
System.arraycopy(args,1,progArgs,0,progArgs.length);
CompilingClassLoader ccl=new CompilingClassLoader();
Class clas=ccl.loadClass(progClass);
//返回一个class的type
Class[] mainArgType={(new String[0]).getClass()};
Method main=clas.getMethod("main",mainArgType);
Object argsArray[]={progArgs};
main.invoke(null,argsArray);
}
}
以上的核心内容已经编写完了,编译后,我们得到两个文件:
CompilingClassLoader.class,TestRun.class
四、编写一个例子,然后运行我们的ClassLoader
/**
*Hello.java
*/
public class Hello{
public static void main(String[] args){
if(args.length!=1){
System.err.println("Error,exit!");
System.exit(1);
}
String name=args[0];
System.out.println("Hello,"+name);
}
}
好了,运行java TestRun Hello 阿飞
....
....
....
Hello,阿飞
您可能感兴趣的文章:
详解JAVA类加载机制(推荐)
通过面试题解析 Java 类加载机制
Java类加载机制实现流程及原理详解
java 类加载机制和反射详解及实例代码
Java运行时环境之ClassLoader类加载机制详解
Java 类加载机制详细介绍
Java类加载机制实现步骤解析
Java类加载器和类加载机制实例分析
详解JAVA类加载机制
深入探究Java中的类加载机制
标签:
岳阳
拉萨
马鞍山
武威
红河
亳州
大兴安岭
郑州
巨人网络通讯声明:本文标题《初探Java类加载机制》,本文关键词 初探,Java,类,加载,机制,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
相关文章
下面列出与本文章《初探Java类加载机制》相关的同类信息!
初探Java类加载机制
一、在jdk1.2以后,类加载是通过委托来完成的,这意味着如果 ClassLoader 不能找到类,它会请求父代 ClassLoader 来执行此项任务,所有 ClassLoaders 的根是系统 ClassLoader,它会以缺省方式装入...
10-18
400电话为什么这么流行,而800电话不再受关注
现在大街小巷都能看到400电话字样,无论是在电视广告、还是站牌广告都带有400号码,原因是客户可以轻易通过400进行咨询,...
05-09
宁夏电话机器人排名前十(宁夏工业机器人)
本篇文章给大家谈谈宁夏电话机器人排名前十,以及宁夏工业机器人对应的知识点,希望对各位有所帮助,不要忘了收藏本站...
08-28
外呼系统管理
伴随着社会的发展,传统电销方式的弊端日益突出。不仅仅是员工的效率低,企业的成本支出也不断升高。这样的发展趋势对...
10-26
PHP基于PDO扩展操作mysql数据库示例
本文实例讲述了PHP基于PDO扩展操作mysql数据库。分享给大家供大家参考,具体如下: SELECT //查单条function get_sub_product(){ $res...
10-18
ofo总部退押现场 退不了押金扣辆小黄车怎么样
物联网技术是当下最前沿的高新科技,物联网并不是单独的个体,而是由众多的智能设备、物联网卡等组成。物联网系统能够...
10-13
电话回访机器人(电话回访机器人话术)
A:“听到电话回访机器人了吧电话回访机器人,信用卡逾期又被提醒了电话回访机器人,不能陪你去逛街了。” B:“唉,真...
11-07
400电话怎么收费标准400的电话是怎么收费的
(400电话怎么收费标准)(400的电话是怎么收费的)以下内容由巨人小编整理发布。 50元办理400电话的流程/月,83元/月,138元/月。...
01-11
电销外呼被限制如何解决?电销卡怎么样?
电销行业在大量外呼的过程中常常面临着号码被封的问题,而电销卡则成为解决这一难题的利器。本文将重点探讨电销卡在解...
11-27
河北省机器人电销外包招聘(河北省机器人电销外包招聘网)
本篇文章给大家谈谈河北省机器人电销外包招聘,以及河北省机器人电销外包招聘网对应的知识点,希望对各位有所帮助,不...
03-04
郑州联通群呼机器人详情-详情报价
郑州联通群呼机器人详情外呼系统集识别、交互于一身,不但可与客户交流,更能给出专业的业务描述和问题解答。将电销系...
01-15
福州电商电销防封软件如何办理-请看!
福州电商电销防封软件如何办理任意布局”的功能。外呼系统不只能协助企业提升客服工作效率,现在电销公司不使用外呼系...
01-16
智能电销机器人(电销机器人开发)
叮咚智能机器人 当前智能电销机器人,世界正掀起新一轮科技革命和产业革命,在物联网、大数据、云计算、认知科学等科...
11-28
丽水专业电话线路服务商,电销软件-哪家比较好
丽水专业电话线路服务商,电销软件外呼系统可以进行一键导入,号码自动拨号,24小时在线,只需短时间机器培训即可上岗,...
12-17
南昌回拨外呼系统供应商(南昌外呼系统软件公司)
今天给各位分享南昌回拨外呼系统供应商的知识,其中也会对南昌外呼系统软件公司进行解释,如果能碰巧解决你现在面临的...
11-06
正则表达式,提取网页中的链接地址
tdclass=catewidth="45%"style="word-break:break-all" aclass=Mhref="http://jmfengcai.cn.alibaba.com/athena/companydetail/jmfengcai.html"onMouseDown="returnaliclick...
10-18
MongoDB开源数据库开发工具dbKoda
Southbank Software公司最近发布了 dbKoda 0.6.0 ,这是该软件的 首个发布版 。dbKoda是一款开源的 MongoDB 开发工具,采用JavaScript、...
10-18
福建电话机器人哪个好用(电话机器人哪家好)
本文目录一览:1、哪家智能电话客服机器人效果好,比较稳定靠谱的那种?2、电销机器人哪个好用?谁给推荐一下3、电话机器人...
08-08
php实现图片压缩处理
本文实例为大家分享了php实现图片压缩处理的具体代码,供大家参考,具体内容如下 说明 在项目中,经常会遇到在前端页面...
10-18
谷歌地图如何标记公司标?谷歌地图如何标记公司标铺?
如何公司名字标到百度地图? 地图测绘行业现在国内只一家公司在测量和商用,叫北京龙图智航科技有限公司,是家上市人...
10-08
如何找到自己在公司的位置?在百度如何找到自己的公司?
在别人的世界里如何找到自己的位置? 当你想走进别人的世界时`你就要具备一定的适应能力...如果你没有`那就让对方走进你...
11-26
Windows 8.1RTM该如何激活 Win8密钥就搞定Windows 8.1激活
日前,Windows 8.1 RTM各种版本已经在坊间泄露开来,许多迫不及待的用户也开始跃跃欲试,但可能有人会疑惑,Windows 8.1RTM该如...
10-20
宇高通讯录音系统服务于世达工具售后客服中心
世达工具(上海)有限公司原名丹纳赫工具(上海)有限公司(隶属于美国丹纳赫集团),负责世达工具在中国的销售,在浦...
10-19
新媒体营销代运营怎么样?
这是一个新媒体的新时代,传统媒体大佬都要退位,新媒体所衍化的微信公众号、自媒体平台等新兴媒体,已经成为每个品牌...
03-01
400电话如何申请办理?(400电话怎样申请的)
400电话如何申请办理?持本单位盖红章的组织机构代码证复印件或营业执照副本和公章、财务章、经办人有效证件办理,签署...
11-07
400电话申请需要企业提供什么证明?申请400电话之后有什么优势?
企业电话,大概是每个企业所具备的一个电话,而400电话作为企业常用的电话,在众多企业电话中脱颖而出,不仅如此,40...
04-19
沈阳外呼系统免费(沈阳外呼公司)
本文目录一览: 1、只需要交电话费的外呼系统2、什么是自动外呼系统,沈阳有做这个的吗?知道的告诉下3、外呼系统安装需要...
11-27
ai智能电话机器人源代码(ai智能电话机器人源代码是什么)
本文目录一览: 1、人工智能电话营销机器人到底能做什么?2、ai通话是什么意思3、AI机器人是什么4、什么是电话机器人?5、...
11-27
中国铁塔启动2021年电力电缆产品集采,需求量1677万米
中国铁塔官方消息显示,中国铁塔2021年度电力电缆(铜缆)产品集中采购项目已具备招标条件,现进行公开招标。 本次集采...
10-13
百度标注地图联系电话,百度地图标注中心联系电话?
百度地图标注联系电话是多少? 您好,请拨打客服电话010-56799399。 由于百度不让打上电话,只能给您截图了 直接联系百度的...
10-08
中外运-敦豪荣获2010中国最佳联络中心电话营销奖
1 月 5 日 记者报道:日前, 10 月 4 日 中国中央电视台中国新闻报道了由国家工业和信息化部软件与集成电路促进中心、中国...
10-22
WIn7系统中无法找到Media Player播放器的快速解决办法
在我们使用的电脑中媒体播放器,又称媒体播放机,而这通常是指电脑中用来播放多媒体的播放软件,把解码器聚集在一起,...
10-20
容联七陌智能客服助力快陪练,打造最大在线钢琴陪练平台
2018年8月,快陪练宣布获得 5000 万人民币(等值美金)天使轮融资,高榕资本领投,IDG 资本跟投。同时该笔融资刷新了艺术教...
10-19
代理商办理400电话流程是怎样
众所周知,办理400电话找正规的代理商是更好的选择,省时间、省精力、省钱、功能又强大。那么代理商办理400电话流程是怎...
05-09
全力推动服务外包产业发展
本报讯(记者 王印)日前,区委召开常委会议,就进一步加强河东区非公有制经济组织和社会组织党建工作,大力发展服务...
10-22
电话机器人telrobot(外呼电话机器人)
2018是人工智能飞速开展德律风呆板人telrobot的一年德律风呆板人telrobot,率先与人工智能牵手的电销企业曾经明白到了它的“...
11-25
青岛家政服务网络中心开张 可提供八大类服务
“您好,欢迎拨打青岛市家政服务网络中心热线……”23日,随着青岛市家政服务网络中心正式开张纳客,从接听、受理、推...
10-19
微软正式发布Win10有哪些亮点?主推跨平台融合
1月22日,微软召开Windows 10发布会,全方位多角度对新系统及微软未来战略规划进行了部署,诸多亮点不容错过! Windows 10是核...
10-20
上海自动外呼系统厂家(外呼系统官网)
本篇文章给咱们谈谈上海主动外呼体系厂家,以及外呼体系官网对应的知识点,期望对各位有所协助,不要忘了保藏本站喔。...
11-06
怎么查看win10的安装日期? win10系统安装日期的两种查询方法
查看Windows10 电脑系统安装日期常用的方法有两个, 一个通过系统设置查看,另一个通过命令查看 。该怎么实现呢?下面我们...
10-19
石家庄电话机器人哪里有(石家庄电话机器人哪里有卖的啊)
本文目录一览:1、电话机器人在哪里买2、请问打电话机器人产品哪家可以一线多发打电话?3、哪里有电话机器人4、服务类的...
07-19
包含无锡电话外呼系统优势的词条
本文目录一览: 1、外呼系统有哪些优点?2、外呼系统好用吗?3、外呼系统,智能外呼机器人好处在哪里?4、外呼系统跟电...
11-27
老颜学堂:呼叫中心知识库管理的常见问题与困惑(一)
问题:联络中心知识库管理的常见业务问题有哪些? 颜晓滨:知识库绝非知识库本身,更是管理、运营品质与效率的体现。...
10-22
什么样的管理者才能减少员工的离职?
1 员工的离职原因 员工的离职原因林林总总,只有两点最真实: 1、钱,没给到位; 2、心,委屈了。 这些归根到底就一条:...
10-22
呼叫中心排班三步走之人力安排篇
――排班员,从体力工作者向脑力工作者的转变 前一篇《呼叫中心排班三步走之预测篇》我们谈了如何进行话务量的准确预...
10-22
电销卡封号图片高清图无水印(电销卡封了对自己有什么影响)
本文目录一览:1、电销电话打多了封号怎么解决?2、电销企业如何避免封号问题,怎么申请专用的电销卡?3、电销卡是什么?为...
07-10
资阳企业外呼系统(四川外呼公司)
本文目录一览: 1、能够简略说一下外呼体系是什么吗?2、外呼体系是什么?3、外呼体系是怎样用的?4、外呼体系怎样处理?...
11-28
商标品牌定位有助于企业整合资源打造强势品牌
自二位大师艾?里斯( Al Ries)和杰克?特劳特( Jack Trout)的定位理论盛行于20世纪以来,定位已被上升到了战略的高度。定位是产品...
10-23
中德安联电话营销违规 领保监会2011年“1号罚单”
保监会近日开出了2011年的“1号罚单”,领受该罚单的是中德安联人寿保险有限公司(下称“中德安联”)。 保监会披露,...
10-19
白名单电销卡办理-电销卡套餐
白名单电销卡办理-电销卡套餐 电销卡套餐 巨人通信主营电销卡、防封电话卡、电销专用卡、高频不封外呼系统、呼叫中心、...
06-23
外呼系统网关怎么设置(外呼系统功能介绍)
本篇文章给大家谈谈外呼系统网关怎么设置,以及外呼系统功能介绍对应的知识点,希望对各位有所帮助,不要忘了收藏本站...
05-17
初探Java类加载机制
一、在jdk1.2以后,类加载是通过委托来完成的,这意味着如果 ClassLoader 不能找到类,它会请求父代 ClassLoader 来执行此项任务,所有 ClassLoaders 的根是系统 ClassLoader,它会以缺省方式装入...
10-18
本页收集关于初探Java类加载机制的相关信息资讯供网民参考!
推荐文章
微赞电销机器人广告
宿州全自动外呼系统报价
常州通信外呼系统推广
徐州小型外呼系统
杭州智能外呼系统供应商
作战地图标注
地图标注道路新增
濮阳人工智能电话机器人价钱
鹤壁语音外呼系统
襄阳高德地图标注地点注册
河南移动外呼系统
联通客服电话机器人如何变粤语
湖北外呼电销机器人招商
开封防封电销电话卡
电销机器人创业前景
洛阳外呼系统api
长沙云外呼系统供应商
IA智能电销机器人
美团洗浴中心地图标注
梧州电销机器人供应商
上海公司外呼系统
容联云电销机器人价格
常州crm外呼系统厂家
宁波百度地图标注
外呼系统点对点
潍坊哪里能办理400电话
内江电话外呼系统
申请400电话流程排名
中国地图标注有美食
海南电销语音机器人
太原电销卡外呼系统线路
天津电话智能外呼系统联系方式
东莞松山湖地图标注
昆明网络外呼系统供应商
机器人电销招生话术
邯郸手机外呼系统
小区地图标注教程
马鞍山高德地图标注
电话机器人市场怎么样
好用的电话机器人使用方法
合肥呼叫中心外呼系统供应商
淮安云外呼系统多少钱
大连外呼增值业务线路解决方案
太原语音电销机器人价格
外呼客户crm管理系统
爱达智能电话机器人
电销机器人软件合法吗
辽宁电销卡外呼系统原理是什么
天润融通外呼线路
北京电销外呼系统稳定吗
湛江crm外呼系统供应商
智能外呼系统教程
受人称赞的400电话办理
地图标注同学去向
外呼系统哪家品牌好
声通电话机器人
地图标注赤峰
智能地产电销机器人哪里有
安徽外呼防封系统是什么
临沧电话外呼管理系统
腾讯物流公司地图标注
显示本地号码的外呼线路
400电话申请有
仙剑1地图标注
广东外呼增值业务线路解决方案
沈阳400电话咋办理
GPS地图标注app
寿光高德地图标注中心
伊春外呼系统接口对接
绍兴防封电销电话卡
南宁市机器人外呼系统多少钱
腾讯店面地图标注
武汉高频外呼系统违法吗
学海导航地图标注
下载电销机器人软件
百度地图标注抓取
金华电销卡防封
爱尔兰地图标注
北京华尔讯外呼系统图片
地图标注娘娘垻卫星地图
百度地图标注公司名
大同办理400电话
电话机器人哪几家比较好
400电话郑州办理处
电话机器人是什么他
来宾400电话申请
四川电话系统外呼
开通400电话去哪里办理
宇信外呼系统
外呼电话机器人怎么样
ai电话机器人取代传统电销
中国地图标注省会城市图标
外呼系统必须用笔记本吗
内蒙古智能外呼系统怎么样
讯鸟外呼系统软件
言通电话机器人软件
知名的电销机器人
湖南手机自动外呼系统线路
商城县地图标注位置
地图标注定位覆盖
ai电销机器人有效果
申请400电话的客服
广州香港400电话 怎么申请
高频电销卡
钉钉里面可以申请400电话吗
外呼系统显示黑名单号码
电话机器人厂家排名
江西自动外呼系统
语音外呼系统收费
称心的电话机器人
外呼线路哪家质量好
屯昌县防封电销卡
外呼系统好销售吗
贵州电销机器人电话
潍坊crm外呼系统招商
沈阳防封电销机器人供应商
湖南外呼网络电话系统
地图标注N
武威电话机器人厂家
科创板电话外呼系统有什么弊端
初探Java类加载机制
上一篇:
Java应用程序中创建图像
下一篇:
EJB3.0之实体Bean的继承
一起分享吧
产品关键词: 初探Java类加载机制 初探,Java,类,加载,机制,