要手动地把一个class加载到jvm中可以有两种方法。
方法一:
使用ClassLoader的loadClass方法,我们查看jdk可以看到loadClass有两个,一个是带一个参数的public 方法(即public Class loadClass(String name))另一个是带两个参数的protected方法(即protected Class loadClass(String name,boolean resolve))。所以我们只能手动的调用那个public的方法,而第二个参数的意义就是是否立即对class进行解释,初始化。所以这样一来只是加载了class而并未初始化。
方法二:
Class.forName(String name)方法,这个东西我们在jdbc中注册驱动时经常用到吧,实际这个方法是调用了loadClass("×××",true),所以一调用本方法就会对class进行初始化哦。
下面是一个测试的demo
public class LoaderTest {
/**
* @param args
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws ClassNotFoundException {
// TODO Auto-generated method stub
// ClassLoader.getSystemClassLoader().loadClass("A");
Class.forName("A");
}
}
class A {
static {
System.out.println("i have been printed~~");
}
}
分享到:
相关推荐
### JVM加载Class文件详解 #### 一、Java与JVM中的Class文件加载机制概述 Java作为一种动态性极强的解释型编程语言,在程序运行时,Java虚拟机(JVM)负责将编译生成的`.class`文件加载到内存中进行执行。在Java...
"class文件热加载,上传class文件实现热加载"这个主题主要涉及到Java应用的运行时动态更新机制。下面将详细介绍这个过程及其相关知识点。 1. **Java类加载器**: - Java虚拟机(JVM)通过类加载器来加载类。默认有...
在Android开发中,动态加载Class是一项重要的技术,它允许应用程序在运行时加载未知或更新的类,从而提高软件的灵活性和可扩展性。这在处理插件化、热修复或者模块化开发时尤为常见。本篇文章将深入探讨如何在...
本文将深入探讨“使用classloader动态加载Class”的相关知识点,同时参考了博客链接:https://ldbjakyo.iteye.com/blog/1046984。 首先,理解ClassLoader的工作原理至关重要。Java中的类加载过程分为三个主要阶段:...
本文将深入探讨Java热加载Class文件的相关知识点。 首先,理解Java虚拟机(JVM)的工作原理是必要的。JVM是一个运行Java字节码的虚拟机,它负责类的加载、验证、解析、初始化以及执行。当程序启动后,JVM会将类加载...
这篇博客“Java类动态加载(一)——java源文件动态编译为class文件”可能主要探讨了如何在运行时将Java源代码(.java)编译成对应的字节码文件(.class),并将其加载到Java虚拟机(JVM)中。以下是对这个主题的详细解析...
JVM加载class文件的原理机制 JVM加载class文件的原理机制是Java中的核心机制之一,由于Java中的所有类必须被装载到JVM中才能运行,这个装载工作是由JVM中的类装载器完成的。类装载器所做的工作实质是把类文件从硬盘...
这样,每次调用代理类中的方法,都会先检查实现类的class文件是否是最新的,如果不是则重新加载,达到动态加载实现类class的目的。 关键字: Java实现热加载; Java动态加载class; Java覆盖已加载的class; Java...
第2节: class文件及类加载详解-01第2节: class文件及类加载详解-01第2节: class文件及类加载详解-01第2节: class文件及类加载详解-01第2节: class文件及类加载详解-01第2节: class文件及类加载详解-01第2节: ...
Java热加载Class文件技术是一种在不重启应用服务器的情况下更新或替换正在运行的Java类的方法,这对于开发者来说是一项非常实用的功能,因为它极大地提高了开发效率。在传统的开发过程中,修改代码后通常需要停止、...
`ClassUtil.java`可能是一个工具类,包含了动态编译代码的相关方法。例如,它可能会有如下功能: ```java import javax.tools.*; import java.io.IOException; import java.util.Arrays; public class ClassUtil {...
在Java编程语言中,`Classloader`(类加载器)是一个至关重要的组件,它负责将类的`.class`文件从磁盘加载到JVM(Java虚拟机)内存中,使得程序能够执行。这篇博文主要围绕`Classloader`的`loadClass`方法进行深入...
默认的`ClassLoader`无法加载内存中的`.class`,所以我们需要自定义一个`ClassLoader`,覆盖`findClass()`方法,从内存中读取`.class`字节码。 8. **创建并执行实例**: 使用`Class.forName()`加载类后,可以调用`...
NULL 博文链接:https://listen-raining.iteye.com/blog/1894456
通常情况下,`Class.forName` 使用当前线程的上下文类加载器,但如果提供了第三个参数,则使用指定的类加载器。 **示例**: ```java try { ClassLoader myLoader = new MyClassLoader(); Class<?> clazz = Class....
"解决 Java 编译成功后运行 Class 文件出现“找不到或无法加载主类”的问题" 在 Java 开发中,经常会遇到一个问题,即 javac 编译成功后,用 java 运行 Class 文件却出现“找不到或无法加载主类”的错误信息。这种...
默认情况下,当类被加载后,除非应用停止,否则ClassLoader不会重新加载该类。 - Java的双亲委托模型(Parent Delegation Model)是ClassLoader的工作机制,它确保了类加载的安全性和唯一性。 2. **Tomcat与JRebel...
NULL 博文链接:https://name327.iteye.com/blog/1554558
创建自定义类加载器通常需要继承`java.lang.ClassLoader`,重写`findClass()`或`loadClass()`方法,从而控制类的查找和加载过程。这使得开发者能够在运行时根据需要加载特定的类,比如从网络、数据库或其他非传统...
iOS中,类的加载则与Objective-C的运行时系统密切相关。当一个类首次被引用时,它的加载会由Objective-C的运行时系统完成。类的方法调用遵循消息传递机制,方法的执行顺序依赖于方法解析、方法交换等技术。例如,...