- 浏览: 279398 次
- 性别:
- 来自: 东方水城
文章分类
最新评论
-
18335864773:
pageoffice 插件 可以实现 office文档的在线操 ...
Java调用com组件操作word -
coosummer:
推荐使用在线免费bug管理系统- bug 禅思:http:// ...
Bug管理工具 -
program_coco:
柠檬bug管理系统,一个在线的bug管理系统。www.lemo ...
Bug管理工具 -
影非弦:
这个in.read(data);//data是一个byte[] ...
Java串口通信总结 -
影非弦:
这个不详细啊,我弄了一天了,都没弄出来,总是出错,读信息的时候 ...
Java串口通信总结
class TestClassA{ public void method(){ System.out.println("Loading ClassA"); } } public class ClassLoaderTest { public static void main(String args[]){ TestClassA testClassA = new TestClassA(); testClassA.method(); } }
class TestClass{ public void method(){ System.out.println("TestClass-method"); } } public class CLTest { public static void main(String args[]) { try{ Class c = Class.forName("TestClass"); TestClass object = (TestClass)c.newInstance(); object.method(); }catch(Exception e){ e.printStackTrace(); } } }
try{ URL url = new URL("file:/d:/test/lib/"); URLClassLoader urlCL = new URLClassLoader(new URL[]{url}); Class c = urlCL.loadClass("TestClassA"); TestClassA object = (TestClassA)c.newInstance(); object.method(); }catch(Exception e){ e.printStackTrace(); }
父类
|
父类
|
载入
|
载入
|
BootstrapLoader
|
PARENT
AppClassLoader
|
PARENT
ExtClassLoader
|
了解 Java 的类加载机制对我们熟练灵活运用 Java 语言,提高程序的运行效率有着非常重要的作用,知其然也要知其所以然,这样才能从整体提高程序的质量。
以上是个人为了毕业要发表的一篇论文,没有什么深度,下面再继续讨论一点关于ClassLoader的一定东东
:
public class ClassLoaderTest1{ private ClassLoaderTest2 test = null; public ClassLoaderTest1(){ test = new ClassLoaderTest2(); } public void method(){ System.out.println("Loading ClassA"); } } class ClassLoaderTest2{ public ClassLoaderTest2(){ } public void method(){ System.out.println("Loading ClassA"); } }
测试程序:
URL url = null; try { url = new URL("file:/E:/JAVA/MyProject/string/"); } catch (MalformedURLException e) { e.printStackTrace(); } URLClassLoader cl = new URLClassLoader(new URL[]{url}); URLClassLoader cl1 = new URLClassLoader(new URL[]{url}); try { Class tempClass = cl.loadClass("ClassLoaderTest1"); Class tempClass2 = cl.loadClass("ClassLoaderTest2"); Object test = tempClass.newInstance(); System.out.println(tempClass.getClassLoader()); System.out.println(tempClass2.getClassLoader()); } catch (Exception e) { e.printStackTrace(); }
当ClassLoaderTest1,ClassLoaderTest2在当前目录和E:/JAVA/MyProject/string/都存在的时候输出为sun.misc.Launcher$AppClassLoader@1050169
sun.misc.Launcher$AppClassLoader@1050169
即都是被AppClassLoader加载的, 即使在
E:/JAVA/MyProject/string/下面也存在.
当ClassLoaderTest1,ClassLoaderTest2只在E:/JAVA/MyProject/string/下存在的时候输出为
java.net.URLClassLoader@480457
java.net.URLClassLoader@1a7bf11
即都是被自定义的加载器加载的,并且也可以Object test = tempClass.newInstance();
下面一的是最关键的,因为ClassLoaderTest1需要用到ClassLoaderTest2,如果ClassLoaderTest2被AppClassLoader加载,而ClassLoaderTest1是被自定义的类加载器加载,就会出现如下错误:
java.lang.IllegalAccessError: tried to access class ClassLoaderTest2 from class ClassLoaderTest1
at ClassLoaderTest1.<init>(ClassLoaderTest1.java:6)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
at java.lang.Class.newInstance0(Class.java:308)
at java.lang.Class.newInstance(Class.java:261)
at ClassLoaderTest.main(ClassLoaderTest.java:43)
发表评论
-
MyEclipse 6.0.1 注册码【注册机】
2013-02-05 10:44 8MyEclipse 6.0 注册机 一、从附件中下载文件 ... -
【转】Flash图表AnyChart应用教程九:创建图表模板
2012-12-14 09:34 1257创建 AnyChart 模板的思路是分离图表设置和数据部分,然 ... -
【转】Flash图表AnyChart应用教程八:创建向下钻取仪表盘
2012-12-14 09:34 1253用 AnyChart 创建向下钻取地图有两种方式:用AnyCh ... -
【转】Flash图表AnyChart应用教程七:自定义轴标签
2012-12-14 09:33 1356AnyChart 图表中的X,Y和任意轴可以自定义标签。本文就 ... -
【转】Flash图表AnyChart应用教程六:创建圆形仪表
2012-12-14 09:33 2109本教程将为你详细解析 ... -
【转】Flash图表AnyChart应用教程五:字体设置
2012-12-13 10:11 1563要设置AnyChart 图表上的字体,可以对AnyChart的 ... -
【转】Flash图表AnyChart应用教程四:如何改变轴标签属性
2012-12-13 10:08 1479有人问到如何自定义AnyChart 图表的轴标签属性,实际上, ... -
【转】Flash图表AnyChart应用教程三:在网页中嵌入flash地图
2012-12-13 10:06 1871AnyChart 是一款灵活的基于Flash/JavaScri ... -
【转】Flash图表AnyChart应用教程二:修改XML设置转换图表类型
2012-12-13 10:02 1139我们都知道,运用flash图表控件 AnyChart 可以创建 ... -
【转】Flash图表AnyChart应用教程一:创建交互式数字仪表盘
2012-12-13 09:51 1685仪表盘是商业智能领域必不可少的一个工具,然而大多数企业仪表盘目 ... -
Java调用com组件操作word
2010-03-30 20:40 5136一、准备工作 先了解一下概念,JACOB 就是 JAVA ... -
JAVA类包搜索引擎
2009-08-12 15:14 1985由于项目开发过程中遇到缺少某个class文件对 ... -
url 加密
2009-08-03 16:11 9743今天我有个朋 ... -
Java串口通信总结
2009-07-31 11:03 6143最近在研 ... -
java异常集说明
2009-03-09 16:39 1575算术异常类:ArithmeticExe ... -
Java异常框架中finally执行、及其他相关问题
2009-03-04 08:29 3020首先看一下异常处理的完整语法,如下: try{ ... -
一个有趣的问题
2009-02-23 09:24 832今天早上过来就看到有人提了这么一个有趣的问题: 有 ... -
开源网站内容管理系统——OpenCms
2009-01-07 15:51 3931之前给客户做 ... -
Java Clone详述
2008-12-17 14:13 1141经常听到有人说java中没 ... -
MessageDigest对密码进行加密
2008-12-17 14:02 2409通常情况下我们必须把用户密码存放到数据库,为了安全起见,我们需 ...
相关推荐
本文将深入探讨 Java 类加载机制的核心概念和技术细节,帮助开发者更好地理解 Java 类加载的过程,以及如何利用这一机制解决实际问题。 #### 二、类和数据的关系 在 Java 中,类和数据有着密切的关系。类定义了...
本篇将深入探讨Java类加载机制的细节,帮助开发者理解类如何被加载、连接以及初始化,以便更好地进行程序设计和问题排查。 在Java中,类加载的过程分为三个主要阶段:加载、验证和初始化。每个阶段都有其特定的任务...
【深入探讨 Java 类加载器】 Java 类加载器是Java虚拟机(JVM)的核心组成部分,它的主要任务是将Java类的字节码加载到JVM中以便执行。类加载器的概念始于JDK 1.0,最初是为了解决Java Applet在浏览器中的运行需求...
本文深入探讨了 Java 类加载器的概念、类型、工作机制以及如何实现自定义类加载器。通过理解类加载器,开发者可以更好地控制类的加载过程,提高应用的性能和安全性。希望本文能帮助你更深入地理解 Java 类加载器及其...
### 深入探讨Java类加载器 #### 类加载器基本概念 类加载器(Class Loader)是Java语言的关键组成部分之一,它负责将Java类的字节码加载到Java虚拟机(JVM)中,从而使得Java应用程序能够运行起来。自Java诞生以来...
本文将深入探讨Java配置加载机制,包括如何将配置文件映射为Java对象以及如何实现多种加载方式,以确保代码的可扩展性和可管理性。 配置加载器(IConfigLoader)是核心接口,它定义了一个加载配置的方法,返回类型...
本篇文章将深入探讨Java的双亲模型类加载机制,以及如何通过自定义类加载器实现特定功能。 首先,双亲模型类加载器的工作原理是基于委托机制,即当一个类加载器收到加载类的请求时,它不会立即尝试加载,而是先委托...
本文将深入探讨Java类加载的各个方面。 首先,类的生命周期包括加载、验证、准备、解析和初始化五个阶段。加载阶段,JVM通过全限定类名获取二进制字节流,将其转换为方法区的运行时数据结构,并创建一个代表该类的...
Java注解、反射、字节码和类加载机制是Java编程中的核心概念,它们在实际开发中扮演着重要角色。让我们深入探讨这些知识点。 **Java注解(Annotation)**: Java注解是一种元数据,它提供了在编译时或运行时处理代码的...
本文旨在深入探讨Java类加载的过程、原理及其在实际开发中的应用。 #### 二、类与数据的概念 在Java中,一个类定义了对象的行为与状态。类定义了可执行的代码,而数据则代表了对象的状态。状态是可以变化的,但...
深入探讨Java的类加载机制.mht
下面我们将深入探讨Java类加载器以及Tomcat中的类加载器。 在Java中,类加载器主要分为三个层次:Bootstrap ClassLoader、Extension ClassLoader和AppClassLoader。Bootstrap ClassLoader负责加载JDK的核心库,如rt...
本文将深入探讨Java类加载的原理、过程以及相关知识点。 首先,我们需要理解类加载的三个基本阶段:加载、验证、准备、解析和初始化。在加载阶段,类加载器寻找指定的类文件,并将其内容读入内存。验证阶段确保字节...
在Java Web开发中,Tomcat作为最常用的Servlet容器,其类加载机制对于理解和优化应用性能至关重要。本文将深入探讨Tomcat的ClassLoader是如何工作的,以及它如何影响到我们的应用程序。 首先,理解类加载器...
本文将深入探讨"springboot+java类热加载"这一主题,包括其核心概念、实现方式以及相关技术。 **热加载(Hot Loading)**是开发过程中的一个重要功能,它允许开发者在不重启应用的情况下更新代码,提高开发效率。在...
首先,我们来详细探讨Java的类加载机制。Java类加载过程分为三个主要阶段:加载、链接和初始化。在加载阶段,类加载器会找到对应的.class文件并创建一个二进制数据流。链接阶段则包括验证、准备和解析三个子步骤,...
本文将深入探讨Java类加载机制以及JVM的工作原理。 首先,让我们关注Java的类加载器。在Java中,类加载过程包括加载、验证、准备、解析和初始化这五个阶段。类加载器的主要任务是找到并读取类的字节码文件(.class...
本文将深入探讨类加载器的工作原理,主要类加载器类型,并通过示例展示如何自定义类加载器。 首先,理解类与数据的区别是重要的。类是代码的蓝图,包含方法和字段声明,而数据则是这些类实例的运行时状态。每个类都...