- 浏览: 139522 次
- 性别:
- 来自: 北京
文章分类
引用
1.自定义类加载器
public interface InterfaceTest { public void test(); }
public class IntefaceImpl implements InterfaceTest { @Override public void test() { // TODO Auto-generated method stub System.out.println("------------"); } }
public class MyClassLoader extends ClassLoader{ private String path = "/home/kevin/"; /** * 加载本地class */ @Override protected Class<?> findClass(String name) throws ClassNotFoundException { String namePath = name.replace(".", "/"); String classPath = path + namePath + ".class"; InputStream is = null; ByteArrayOutputStream os = null; try { is = new FileInputStream(new File(classPath)); os = new ByteArrayOutputStream(); int b = 0; while ((b = is.read()) != -1) { os.write(b); } byte[] bytes = os.toByteArray(); os.flush(); return defineClass(name, bytes, 0, bytes.length); } catch (Exception e) { e.printStackTrace(); }finally{ try { if(os!=null) os.close(); if(is!=null) is.close(); } catch (IOException e1) { os=null; is = null; } } return null; } /** * 此种方式加载的两个jar中的类无法相互访问,因为new URLClassLoader出来的类加载器是兄弟关系 * 调用URLClassloader的protected方法addURL即可实现在需要时加载jar到loader中。 * @throws Exception */ public void test()throws Exception{ //加载jar包 File file = new File("/home/kevin/workspace/eclipsespace/JavaTest/bin/com/a.jar"); URL uri = file.toURI().toURL(); System.out.println(uri); //或者加载网络jar包 uri = new URL("http://xxx.xxx.com/resources/ebook/a.zip"); URLClassLoader load = new URLClassLoader(new URL[]{uri}); System.out.println(load.loadClass("IntefaceImpl")); ((InterfaceTest)(load.loadClass("IntefaceImpl").newInstance())).test(); } public static void main(String[] args) { MyClassLoader myLoader = new MyClassLoader(); try { Class myClass = myLoader.loadClass("IntefaceImpl"); Object obj = myClass.newInstance(); ((InterfaceTest)obj).test(); // Method method = myClass.getMethod("say", null); // method.invoke(obj, null); } catch (Exception e) { e.printStackTrace(); } } }
发表评论
-
storm 安装
2013-09-02 16:32 3066------------------------------- ... -
动态代理性能比较
2013-01-18 17:02 1155转自http://javatar.iteye.com/blog ... -
jackson 学习
2012-11-13 15:42 10021.json 转为object对象 public clas ... -
java 线程池 异常 处理 机制 分析
2012-10-31 19:34 2130public class ThreadTest { ... -
ThreadPoolExecutor 原理-- java 线程池
2012-08-08 19:14 1143整个ThreadPoolExecutor的任务处理有4 ... -
java 缓冲
2012-08-08 19:12 1063import org.apache.log4j.Logge ... -
java 程序消耗 cpu 100% 查找方法
2012-05-16 14:38 17216问题原因:由于HashMap是非线程安全的,在多线程访问时,造 ... -
java io
2012-04-24 11:06 9161、按字节读取文件内容 2、按字符读取文件内容 3、按行读取 ... -
java 内省
2011-11-20 22:58 835java内省 -
系统常用工具类
2011-04-20 17:46 10331.ArithUtil.java ... -
spring 面向切面编程
2010-12-27 17:03 1088@Aspect public class AspectCoup ... -
jxl 写入excel
2010-11-10 13:52 10121.程序调用 ReportInterface report ... -
java 读取excel
2010-11-10 09:04 954package com.longtuo.client.act ... -
java 生成略缩图
2010-10-20 17:21 1201import java.awt.Graphics2D; imp ... -
XStream简单介绍
2010-09-10 15:44 1684创建能够序列化的类 这是一组简单的类。XStream能把这 ... -
java中对集合类的排序
2010-05-04 13:47 9021.第一种 public class User impleme ... -
Java 获取操作系统信息与Desktop类
2009-11-17 16:24 1364import java.util.Properties; ... -
java 事物处理
2009-10-15 10:52 1432public boolean deleteSchedule ...
相关推荐
java类加载器学习三、类加载器的委托模式
java类加载器学习二、自定义类加载器
Java类加载器是Java运行时环境(JRE)的一个重要组成部分,它负责将Java字节码加载到内存中,使其可以被Java虚拟机(JVM)执行。类加载器本身也是一个类,它的主要职责是从文件系统、网络或者JAR包中加载类文件到JVM...
Java 类加载器是Java虚拟机(JVM)的重要组成部分,它负责将类的.class文件从文件系统或网络中加载到内存中,并将其转换为运行时的类对象。类加载器的这种动态加载机制为Java提供了极高的灵活性,使得程序可以在运行...
类装载器学习一、类加载器的基本概念 类装载器学习一、类加载器的基本概念 类装载器学习一、类加载器的基本概念
Java中的类加载器是JVM(Java虚拟机)的核心组件之一,它们负责将.java源代码编译成的.class字节码文件加载到JVM中,从而使得程序能够运行。类加载器不仅涉及到程序的正常执行,还与Java的动态加载、模块化系统以及...
关于Java类加载器的探讨 Java类加载器是Java技术系统中核心的部分,它们之间存在继承关系。引导类加载器负责加载jdk中的系统类,扩展类加载器负责加载标准...因此,学习和理解Java类加载器对Java开发人员非常重要。
理解类加载器的工作原理对于深入学习Java编程至关重要。在Java中,类加载器按照层次结构进行组织,包括引导类加载器、扩展类加载器和应用程序类加载器,每个都有特定的职责。 1. **引导类加载器(Bootstrap ...
Java类加载器是Java虚拟机(JVM)的重要组成部分,它的主要职责是将类的字节码文件(.class文件)从文件系统、网络或内存中读取,并转换为运行时的java.lang.Class对象。这个过程是Java动态加载机制的核心,使得Java...
Java类加载器采用了**双亲委派模型(Parent Delegation Model)**,这意味着当一个类加载器收到加载类的请求时,它首先会委托其父类加载器去尝试加载,只有当父类加载器无法加载时,当前类加载器才会尝试自己加载。...
本文主要解析Java类加载的原理,分为三个部分:基础的类加载原理解析、插件环境下的类加载和线程上下文类加载器。 首先,Java虚拟机(JVM)内置了三种预定义的类加载器: 1. 启动(Bootstrap)类加载器:这是最基础的...
线程上下文类加载器(Thread Context ClassLoader)是Java提供的一种机制,允许线程在运行时指定一个类加载器,确保类由同一个类加载器加载。这对于应用程序服务器和插件系统尤其有用,因为它允许组件使用自己的类...
在Java编程中,类加载器(Class Loader)扮演着至关重要的角色,它负责查找并加载Java类到JVM内存中。本部分我们将深入探讨JVM中的类加载器,特别是根类加载器、扩展类加载器和系统类加载器。 首先,让我们了解类...
理解类加载器的工作原理对于深入学习Java平台、优化应用程序性能以及实现自定义加载器至关重要。 1. **类加载器层次结构** Java中的类加载器分为三个主要层次:启动类加载器(Bootstrap ClassLoader)、扩展类加载...
* 学习如何将自定义类加载器集成到Java应用中。 * 修改类加载器以适应Java 2版本。 为了更好地理解本教程,你需要具备以下基础: * 基本的Java编程能力,包括能够创建、编译和执行简单的命令行Java程序。 * 对类...
Java的类加载机制遵循双亲委派模型,即当一个类加载器接收到加载类的请求时,它会首先将这个任务委托给父类加载器,只有当父类加载器无法找到对应的类时,才会尝试自己去加载。这种设计有助于保持类的唯一性和避免...
本文将主要围绕“黑马程序员------类加载器学习注意点”展开,探讨一些关键知识点。 首先,我们需要理解类加载器的基本工作原理。在Java中,类加载过程包括加载(Loading)、验证(Verification)、准备...