- 浏览: 250144 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (192)
- 技术研究学习 (19)
- 工作总结 (4)
- spring3.x (11)
- mail (2)
- jar (2)
- FCKeditor (1)
- quartz (2)
- json (1)
- jdbc (5)
- struts2 (6)
- java基础 (18)
- jboss (3)
- IT名称解析 (1)
- 测试工具 (2)
- 工作趣谈 (1)
- 数据库 (8)
- js (8)
- jquery (1)
- mysql (20)
- Sql (3)
- Oracle (1)
- easyui (0)
- log4j (1)
- 源码研究 (1)
- Jasper Report (0)
- Jbpm4 (4)
- xml (1)
- ireport (0)
- javavm (1)
- sitemesh (5)
- compass (1)
- jvm (1)
- ext (1)
- lucene (0)
- cxf (1)
- Blazeds (0)
- Resteasy (1)
- jaxb (1)
- tomcat (1)
- Rmi (1)
- BoneCP (1)
- velocity (3)
- OSCache (1)
- EHCache (1)
- 高性能开发 (9)
- 设计模式 (0)
- 网络协议应用 (1)
- Ibatis (1)
- powerdesigner (1)
- 架构师之路 (2)
- memcached (4)
- MapReduce (1)
- 测试组 (1)
- 图像处理 (2)
- LoadRunner (2)
- 报表 (1)
- 负载均衡 (1)
- 分布式 (3)
- c# (1)
- java中一些特殊问题 (3)
- java 8 (1)
- Mogodb (1)
- 项目设计与实现 (2)
- Ubuntu (1)
- eclipse (1)
- gradle (1)
- 私有云 (1)
- redis (1)
- 移动前端 (1)
最新评论
1.参考老外:
ClassPathUpdater.add("E:\\workspaces\\MyDemos\\MyClass.class");
String path = "E:\\workspaces\\MyDemos\\";
URL url = new URL("file", null, path);
URLClassLoader loader = new URLClassLoader(new URL[] {url});
Class clazz = loader.loadClass("MyClass");
2.rewrite ClassLoader
MyClassLoader mcl = new MyClassLoader();
clazz = mcl.loadClass("E:\\workspaces\\MyDemos\\MyClass.class");
public class ClassPathUpdater { /** Used to find the method signature. */ private static final Class[] PARAMETERS = new Class[] { URL.class }; /** Class containing the private addURL method. */ private static final Class CLASS_LOADER = URLClassLoader.class; /** * Adds a new path to the classloader. If the given string points to a file, * then that file's parent file (i.e., directory) is used as the directory * to add to the classpath. If the given string represents a directory, then * the directory is directly added to the classpath. * * @param s * The directory to add to the classpath (or a file, which will * relegate to its directory). */ public static void add(String s) throws IOException, NoSuchMethodException, IllegalAcces***ception, InvocationTargetException { add(new File(s)); } /** * Adds a new path to the classloader. If the given file object is a file, * then its parent file (i.e., directory) is used as the directory to add to * the classpath. If the given string represents a directory, then the * directory it represents is added. * * @param f * The directory (or enclosing directory if a file) to add to the * classpath. */ public static void add(File f) throws IOException, NoSuchMethodException, IllegalAcces***ception, InvocationTargetException { f = f.isDirectory() ? f : f.getParentFile(); add(f.toURI().toURL()); } /** * Adds a new path to the classloader. The class must point to a directory, * not a file. * * @param url * The path to include when searching the classpath. */ public static void add(URL url) throws IOException, NoSuchMethodException, IllegalAcces***ception, InvocationTargetException { Method method = CLASS_LOADER.getDeclaredMethod("addURL", PARAMETERS); method.setAccessible(true); method.invoke(getClassLoader(), new Object[] { url }); } private static URLClassLoader getClassLoader() { return (URLClassLoader) ClassLoader.getSystemClassLoader(); } }
ClassPathUpdater.add("E:\\workspaces\\MyDemos\\MyClass.class");
String path = "E:\\workspaces\\MyDemos\\";
URL url = new URL("file", null, path);
URLClassLoader loader = new URLClassLoader(new URL[] {url});
Class clazz = loader.loadClass("MyClass");
2.rewrite ClassLoader
static class MyClassLoader extends ClassLoader { @Override public Class<?> findClass(String name) { try { FileInputStream in = new FileInputStream(name); ArrayList<Byte> l = new ArrayList<Byte>(); int c; while ((c = in.read()) != -1) { l.add(new Byte((byte)c)); } byte[] b = new byte[l.size()]; for (int i = 0; i < l.size(); i++) { b[i] = l.get(i).byteValue(); } return defineClass(b, 0, b.length); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } }
MyClassLoader mcl = new MyClassLoader();
clazz = mcl.loadClass("E:\\workspaces\\MyDemos\\MyClass.class");
发表评论
-
java集合查询测试结果
2013-06-08 09:41 1148package test.com; import j ... -
对象池修订版
2013-03-08 14:09 0public class ObjectPool { ... -
深入研究java.lang.Process类
2013-03-07 12:07 857一、概述 Process ... -
深入研究java.lang.Runtime类
2013-03-07 11:54 971一、概述 Runtime ... -
JAVA图像缩放处理
2012-11-09 16:33 915import java.awt.image.Buffere ... -
oa
2012-10-19 18:03 0http://code.google.com/p/joffic ... -
Frameset导致Cookies和Session丢失的原因及解决办法
2012-09-29 11:27 75311.Frameset导致Cookies和Session丢失 ... -
java synchronized详解
2012-09-29 11:28 821来源:http://www.cnblogs.com/GnagW ... -
长连接与短连接
2012-09-29 11:29 1043来源:http://www.cnblogs.com ... -
java实时监测文件夹的变化,允许多用户同时访问,完成文件转移
2012-10-04 09:26 1193来源:http://www.189works.com/arti ... -
jndi调用时,各种应用服务器InitialContext的写法
2012-09-27 11:12 949调用ejb时,如果客户端和ejb不在同一个jvm,就要 ... -
jvm字节码执行引擎
2012-08-16 12:25 1066一. 运行时栈帧结构 1. 栈帧是用于支持虚拟机进行方法调用 ... -
ClassWorking技术
2012-08-16 12:25 1373ClassWorking技术 IBM所提出的,动态地监测、修 ... -
quartz-scheduler的集群化配置
2012-08-13 09:33 1692由于集群只能工作在JDBC-Jobstore(JobStore ... -
dbcp连接池实现
2012-08-09 13:10 1644dbcp连接池实现commons DBCP 配置参数简要说明 ... -
常用jar包之commons-beanutils使用
2012-08-20 14:07 1459核心提示:Jakarta Commons 项目提供了相当丰富的 ... -
aop详解
2012-08-09 13:09 1335使用Spring进行面向切面 ... -
Dwr2+Struts2+Spring2.5+Hibernate3整合
2012-08-08 12:33 9671.//如果不用,启动时不会出错,但使用Dwr时,会抛出异常: ... -
AOP面向编程的使用场合
2012-08-07 20:45 977AOP(Aspect-Oriented Programming ... -
23种设计模式详解
2012-08-08 13:41 1370Java中23种设计模式 目录 1. 设计模式 3 1. ...
相关推荐
在Android系统中,动态加载Class文件是实现插件化、热修复等高级功能的关键技术。标题中的"android动态加载class文件(DexClassLoader可从SD卡加载)"指的是利用Android的DexClassLoader类来实现从外部存储(如SD卡...
这篇博客“Java类动态加载(一)——java源文件动态编译为class文件”可能主要探讨了如何在运行时将Java源代码(.java)编译成对应的字节码文件(.class),并将其加载到Java虚拟机(JVM)中。以下是对这个主题的详细解析...
### JVM加载Class文件详解 #### 一、Java与JVM中的Class文件加载机制概述 Java作为一种动态性极强的解释型编程语言,在程序运行时,Java虚拟机(JVM)负责将编译生成的`.class`文件加载到内存中进行执行。在Java...
总结起来,Android 动态加载Class涉及到的关键技术包括:自定义ClassLoader、Dex文件操作、反射、权限管理以及Android的类加载机制。这一技术在提高程序灵活性和维护性的同时,也需要开发者对Android系统的深入了解...
总之,理解并掌握如何使用ClassLoader动态加载Class是Java开发中的重要技能,它能帮助我们构建更灵活、可扩展的系统。在实现过程中,要兼顾性能、安全和可维护性,合理设计类加载策略,确保代码的高效运行。
Android动态加载技术是指在Android系统中,通过加载Class文件实现应用程序的更新和升级,而无需重新安装APK文件。这种技术可以提高用户体验,减少用户更新应用程序的麻烦。 Android动态加载技术的研究可以分为以下...
总之,Java热加载Class文件是提高开发效率的有效手段,它通过动态替换和更新类,使得开发者能够在不重启JVM的情况下观察代码更改的效果。了解并掌握这项技术,对于提升Java开发者的生产力具有重要意义。
然后在`findClass()`方法中,我们根据类名查找对应的.class文件,读取其内容并将其转换为字节数组,最后调用`defineClass()`方法定义并返回这个类。 使用自定义类加载器后,我们可以在程序运行时动态加载jar文件中...
让Java支持热加载是个不错的想法。如何做到的呢? 1. 定义好接口和实现类 2. 让代理类通过反射的方式调用实现类,对外暴露的是代理类。...Java动态加载class; Java覆盖已加载的class; Java自定义classloader;
"class文件热加载,上传class文件实现热加载"这个主题主要涉及到Java应用的运行时动态更新机制。下面将详细介绍这个过程及其相关知识点。 1. **Java类加载器**: - Java虚拟机(JVM)通过类加载器来加载类。默认有...
对于动态加载,我们可以利用`Resource`接口和`ClassPathResource`类来加载运行时变更的属性文件。 除了这两种方式,Spring Boot引入了更强大的`ConfigDataLocationResolver`和`ConfigDataLoader`接口,它们允许我们...
Java热加载Class文件技术是一种在不重启应用服务器的情况下更新或替换正在运行的Java类的方法,这对于开发者来说是一项非常实用的功能,因为它极大地提高了开发效率。在传统的开发过程中,修改代码后通常需要停止、...
JVM加载class文件的原理机制 JVM加载class文件的原理机制是Java中的核心机制之一,由于Java中的所有类必须被装载到JVM中才能运行,这个装载工作是由JVM中的类装载器完成的。类装载器所做的工作实质是把类文件从硬盘...
spring的bean动态加载则需要对相应的bean进行动态注册,以及jar与class文件动态加载。测试示例中是spring boot 的部分代码,动态加载的内容为接口实现类,且初始化时加载本地的实现类,动态加载后改为非程序加载目录...
本篇文章将深入探讨“动态加载dex动态加解密dex文件”这一主题,以及如何实现APP的加固原理。 首先,我们要理解Dex文件。Dex是Dalvik Executable的缩写,它是Android应用的主要代码格式。Dalvik虚拟机负责执行这些...
JVM加载class文件的原理机制 JVM加载class文件的原理机制是Java虚拟机中一个非常重要的组件,负责将class文件加载到内存中,以便Java程序的执行。下面是JVM加载class文件的原理机制的详细介绍: 类加载的原理 在...
4. **加载类**:对于每个类文件,使用自定义类加载器的`defineClass()`方法将其字节码转换为Class对象。这个过程涉及解码字节码、校验类信息,然后创建Class对象。 5. **反射调用方法**:一旦类被加载,我们可以...
NULL 博文链接:https://name327.iteye.com/blog/1554558
“dx处理”是指使用dx命令行工具,将.jar文件中的.class文件转换成.dex文件。这个过程是必要的,因为Android系统只能理解和执行.dex格式的代码。转换的命令通常如下: ``` dx --dex --output=classes.dex ...
总结来说,C# WinForm通过配置文件动态加载DLL的关键步骤包括:读取配置文件中的DLL路径,使用`Assembly.LoadFrom`加载DLL,通过反射获取并实例化DLL中的类,最后调用类的方法执行功能。这种方法提高了代码的可维护...