`

Java 从Jar文件中动态加载类

    博客分类:
  • java
 
阅读更多

从Style.jar中加载程序所需要的样式

其中Style.jar中有一个MyStyle的类实现了一个StyleInterface的接口

接口代码如下:

public interface StyleInterface {

    public String getStyle();

}

MyStyle类的代码如下:

public class MyStyle implements StyleInterface{

    @Override

    public String getStyle() {

        return "我是从MyStyle中得到的样式代码!";

    }

}

 

然后,在记事本主程序程序中通过如下方式调用:

 

    String class_path = "MyStyle";//Jar中的所需要加载的类的类名

    String jar_path = "file://D:\Style.jar";//jar所在的文件的URL

    try {

        ClassLoader cl = new URLClassLoader(new URL[]{new URL(jar_path)});//从Jar文件得到一个Class加载器

        Class<?> c = cl.loadClass(class_path);//从加载器中加载Class

        StyleInterface sif = (StyleInterface) c.newInstance();//从Class中实例出一个对象

        System.out.println(sif.getStyle());//调用Jar中的类方法

    } catch (MalformedURLException e) {

        e.printStackTrace();

    } catch (ClassNotFoundException e) {

        e.printStackTrace();

    } catch (InstantiationException e) {

        e.printStackTrace();

    } catch (IllegalAccessException e) {

        e.printStackTrace();

    }

注意:

  • class_path必须是完整类名(连同所在的包的路径),例如:在myjava.test下有一个类Test,则Test的完整类名是:myjava.test.Test.而如果是在"缺省包"下的类,就可以省略包的路径(本来就没有)。

  • jar_path不是Jar文件的路径,而是Jar文件的URL。

    通常可以这样表示:"file://Jar文件的绝对路径"

  • 从Class中实例出对象时,一定要把Object强制转换成实现指定接口的类,就想例子中的StyleInterface

分享到:
评论

相关推荐

    Java 动态加载jar文件示例

    Java 动态加载jar文件示例,轻松实现插件式开发

    Java 自动加载JAR文件并运行其中的类方法

    Java 自动加载JAR文件并运行其中的类方法

    springboot+java类热加载

    springboot 、java类热加载、jarinjar、动态编译、自动引用依赖

    Spring bean 动态注册,jar包热替换

    Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class...测试示例中是spring boot 的部分代码,动态加载的内容为接口实现类,且初始化时加载本地的实现类,动态加载后改为非程序加载目录中的jar实现类。

    Java加载。jar包

    类加载是通过委托来完成的,这意味着如果 ClassLoader 不能找到类,它会请求父代 ClassLoader 来执行此项任务,所有 ClassLoaders 的根是系统 ClassLoader,它会以缺省方式装入类 -- 即,从本地文件系统。...

    Java URLClassLoader动态加载jar包1

    该类加载器用于从指向 JAR 文件和目录的 URL 的搜索路径加载类和资源。如果不是以该字符结束,则认为该 URL 指向一个将根据需要打开的 JAR 文件pac

    Android 中动态加载.jar的实现步骤

    首先第一个是 jar 文件的制作,Java 里面直接把 .class 文件打包到 .jar 文件里面就可以了,但是 Android 的 Dalvik VM 是不认 Java ...要动态加载其它类,可以用的 Class Loader 有: DexClassLoader,PathClassLoader

    JDK8 下 SpringBoot 应用动态编译 Java 源码并注入 Spring 容器

    基于接口、抽象类实现不停机动态调整代码的目的,将修改后的源码文件放置于指定目录下,读取文件后执行动态编译方法,即可将该类重新加载,新的类可以在Spring容器从新注册,且仅在当前窗口生效。如果重启了服务或...

    解决java打包之后无法加载静态资源的问题SWTResourceManager.java源码

    利用swt中的一个获取图片的类SwingResourceManager 来解决将程序打为使用java打包之后,生成的jar包中图片找不着的。这是因为通过class.getResource()方法在IDEA中运行的路径和生成jar包获取的的路径是不同的。打成...

    Java虚拟机JVM类加载初始化

    3):从jar、zip等等压缩文件加载类,自动解析jar文件找到class文件去加载util类 4):从java源代码文件动态编译成为class文件 当一个类被加载、连接、初始化后,它的生命周期就开始了,当代表该类的Class对象不再...

    高级java笔试题-itresource:程序开发技术资源集合

    从Jar文件中动态加载类 ] () [ Java并发源码分析 - ThreadPoolExecutor ] () [ java ClassLoader 基本原理 ] () [ 解决eclipse显示jar源代码中文乱码问题 ] () [ 使用 RMI + ZooKeeper 实现远程调用框架 ] () [ Java...

    Java动态编译Java代码,运行在内存中,并执行

    *1.创建 URLClassLoader 类加载器 * 2.获取当前执行的classpath的所有jar包的路径 * 3.通过java的ToolProvider创建JavaCompile,用来执行class源文件 ...创建DynamicClassLoader来加载类 ,defineClass这个方法

    Java读写Excel的jar包

    jxl.jar概述:  通过java操作excel表格的工具类库 ...如果包不能正常的加载,可以把你下载好的JXL.JAR包放入D:\JAVA\jre\lib\ext中(我的是JDK1.6)就OK了。我相信在配置TOMCAT时也需要把相关的三个包放到这里面。

    根据class类名在所有Jar包文件中查找class类路径以及jar名字

    功能讲解: 1.搜索分析指定路径下所有jar包中是否存在指定文件。譬方说要在jar包中查询某个**.class文件。...6.查看Class从那个jar文件加载及在jar文件中查找Class 7.快速找出Class文件所在的Jar文件

    掌握Java类加载器

    类加载器从源文件(通常是.class 或 .jar文件)获得不依赖平台的字节码,然后将它们加载到JVM内存空间,所以它们能被解释和执行。默认状态下,应用程序的每个类由java.lang.ClassLoader加载。因为它可以被继承,所以...

    spring jar 包详解

    (10) spring-support.jar 这个jar文件包含支持缓存Cache(ehcache)、JCA、JMX、邮件服务(Java Mail、COS Mail)、任务计划Scheduling(Timer、Quartz)方面的类。 (11) spring-web.jar 这个jar文件包含Web应用...

    web开发自动加载修改后的java文件

    web开发时,修改java文件后,无须重启服务器便可自动加载修改之后的java文件。本资源包含jrebel.jar及其使用说明。

    Java类文件加密专家

    在要分发您的Java应用程序前,使用Java 类文件加密专家对所有的Class文件或Jar文件进行加密,在您的系统运行参数中加入以下内容: 1.WEB应用程序 在您使用的Java Web Server的启动参数中,增加以下内容: -...

    Aspose, word、excel、PPT 转PDF文件jar包加工具类

    实现word、excel、PPT 转PDF文件功能。去插件水印,添加word、excel、...主要包含aspose.pdf-17.3.0.jar、aspose.slides-19.3.jar、aspose-cells-8.5.2.jar、aspose-words-15.8.0-jdk16.jar、license.xml、PdfUtil.java

    java调用kettle所需jar包(包含oracle和mysqljar驱动).rar

    java调用kettle时需要的jar包合计,其中包括了可能会用到的Oracle和MySQL的驱动文件

Global site tag (gtag.js) - Google Analytics