当前位置: 首页 > news >正文

广西省建设注册管理网站wordpress 附件丢失

广西省建设注册管理网站,wordpress 附件丢失,家装公司简介,福田的网站建设公司1.ClasserLoader介绍? classloader顾名思义,即是类加载。虚拟机把描述类的数据从class字节码文件加载到内存,并对数据进行检验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。…

1.ClasserLoader介绍?

classloader顾名思义,即是类加载。虚拟机把描述类的数据从class字节码文件加载到内存,并对数据进行检验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。了解java的类加载机制,可以快速解决运行时的各种加载问题并快速定位其背后的本质原因,也是解决疑难杂症的利器。因此学好类加载原理也至关重要。

内置类加载器

JVM 中内置了三个重要的 ClassLoader

  1. BootstrapClassLoader(启动类加载器):最顶层的加载类,由 C++实现,通常表示为 null,并且没有父级,主要用来加载 JDK 内部的核心类库( %JAVA_HOME%/lib目录下的 rt.jarresources.jarcharsets.jar等 jar 包和类)以及被 -Xbootclasspath参数指定的路径下的所有类。
  2. ExtensionClassLoader(扩展类加载器):主要负责加载 %JRE_HOME%/lib/ext 目录下的 jar 包和类以及被 java.ext.dirs 系统变量所指定的路径下的所有类。
  3. AppClassLoader(应用程序类加载器):面向我们用户的加载器,负责加载当前应用 classpath 下的所有 jar 包和类。

除了这三种类加载器之外,用户还可以加入自定义的类加载器来进行拓展,以满足自己的特殊需求。就比如说,我们可以对 Java 类的字节码( .class 文件)进行加密,加载时再利用自定义的类加载器对其解密。

2.代码工程

实验目标

实现加载外部jar包,并调用其中类方法

JarLoader

package com.et;import java.net.URL;
import java.net.URLClassLoader;
import java.lang.reflect.Method;
import java.io.File;public class JarLoader {private URLClassLoader urlClassLoader;// load JAR filepublic void loadJar(String jarFilePath) throws Exception {File jarFile = new File(jarFilePath);URL jarUrl = jarFile.toURI().toURL();urlClassLoader = new URLClassLoader(new URL[]{jarUrl}, this.getClass().getClassLoader());System.out.println("JAR Loaded: " + jarFilePath);}//load class from  JAR and invoke methodpublic void invokeClassMethod(String className, String methodName) throws Exception {if (urlClassLoader != null) {Class<?> loadedClass = urlClassLoader.loadClass(className);Method method = loadedClass.getDeclaredMethod(methodName);method.invoke(loadedClass.newInstance());System.out.println("Method Invoked: " + methodName);} else {System.out.println("ClassLoader is null, load a JAR first.");}}// unload JARpublic void unloadJar() throws Exception {if (urlClassLoader != null) {urlClassLoader.close();  // close ClassLoaderurlClassLoader = null;    // let it recycle by jvmSystem.out.println("JAR Unloaded.");} else {System.out.println("No JAR to unload.");}}
}

service(demo模块)

  • 创建sevice类
  • mvn install 打包成jar包
package com.et.demo.service;public class MockService implements Service {@Overridepublic void printVersion() {System.out.println("11.0");}
}
package com.et.demo.service;public interface Service {void printVersion();
}

以上只是一些关键代码,所有代码请参见下面代码仓库

代码仓库

  • GitHub - Harries/Java-demo(classloader)

3.测试

编写测试类

package com.et;public class Main {public static void main(String[] args) throws Exception {JarLoader jarLoader = new JarLoader();// load JARjarLoader.loadJar("D:\\IdeaProjects\\Java-demo\\demo\\target\\demo-1.0-SNAPSHOT.jar");// invoke the methodjarLoader.invokeClassMethod("com.et.demo.service.MockService", "printVersion");// unload JARjarLoader.unloadJar();}
}

启动main方法,查看日志

JAR Loaded: D:\IdeaProjects\Java-demo\demo\target\demo-1.0-SNAPSHOT.jar
11.0
Method Invoked: printVersion
JAR Unloaded.
Disconnected from the target VM, address: '127.0.0.1:53226', transport: 'socket'Process finished with exit code 0

4.引用

  • ClassLoader (Java Platform SE 7 )
  • 利用ClasserLoader来实现jar包加载并调用里面的方法 | Harries Blog™
http://www.yayakq.cn/news/673609/

相关文章:

  • 交换机做网站四川省建设厅门户网站
  • 网络网站销售ip库网站源码
  • 响应式网站样式图怎么做网站建设设计公司 知乎
  • 高港做网站看男科花了一万多了
  • 网站建设策划书结束语北京商会网站建设
  • 哈尔滨专业建设网站设计荥阳市建设局网站
  • 工商做年报网站自己做个网站多少钱
  • 设计教学网站推荐crm管理系统 一般包含
  • 网站建设平台点击进入青岛今天发生的重大新闻
  • 罗湖网站建设公司著名建筑网站
  • 用哪个平台做网站好免费下载网页模板
  • 郑州做网站哪家好熊掌号isite企业建站系统
  • 网站运营编辑做什么的石家庄市建设厅官网
  • 手机网站制作注意事项精品资料网 资料库
  • 贵州省住房和城乡建设厅官方网站首页wordpress英语转换成汉文
  • ipv6改造 网站怎么做短信验证码接码网站建设
  • 网站目录改版做优惠券网站
  • 商城网站建设哪家公司好yasee119最新域名是什么
  • 上饶哪里培训网站建设企石镇网站仿做
  • node 做的大型网站佛山网站建设玲念建站
  • 网站维护兼职企业年金查询个人账户查询
  • 成都网站制作汕头德国建设部网站
  • 网站建设接活app乐清市建设路小学网站
  • 建设商务网站过程扫码点餐小程序怎么制作
  • 简述网站的建设步骤外贸网站运营推广
  • 长沙网站建设推荐网站只显示一个网址
  • 株洲网站建设服务公司浦口区网站建站公司
  • iis搭建网站时济南本地网站建设公司
  • 网站群建设 会议 主持四川省建设工程质量监理协会网站
  • 如何快速学会做网站建网站设计