java怎样使用jar包中的类_Java动态加载jar包中类的方法

  • Post author:
  • Post category:java


JAVA启动后,经过JVM各级ClassLoader来加载各个类到内存。

JVM的ClassLoader分三层,分别为Bootstrap ClassLoader,Extension ClassLoader,System ClassLoader。

Bootstrap ClassLoader是启动类加载器,它是用C++编写的,从%jre%/lib目录中加载类。

Extension ClassLoader是扩展类加载器,从%jre%/lib/ext目录加载类。

System ClassLoader,系统类加载器,它会从系统环境变量配置的classpath来查找路径。

62181e6eed96fddd2c0f366eca9b1599.png

情形一  重新jre/lib中的jar包

在windows系统上,我们可以安装多个JDK和JRE。设想一种情形: 我们设定当前JVM启动的是C:\Program Files (x86)\Java\jre1.7.0_85, 但是我们想读取在C:\Program Files (x86)\Java\jre1.8.0_60目录下\lib下deploy.jar,并通过com.sun.deploy.util.SecurityBaseline.getDeployVersion()输出当前的deployVersion。

在了解类加载机制后,我们知道lib/deploy.jar是通过启动类加载器加载的,在JVM启动后,如何去加载另一个指定目录中的deply.jar呢?



版权声明:本文为weixin_42511315原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。