`

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文件,并执行其中特定的类方法,这在插件系统、模块化应用或动态扩展性需求中尤为常见。本篇将详细讲解如何实现这一目标。 首先,理解JAR(Java Archive)文件是Java...

    动态加载jar包

    默认情况下,JVM会使用系统类加载器来查找和加载类,但我们可以自定义类加载器来实现特定的加载逻辑,比如从特定的jar文件中加载类。 以下是动态加载jar包的基本步骤: 1. **创建自定义类加载器**:首先,我们需要...

    springboot+java类热加载

    在Java中,类加载器负责查找并加载类到Java虚拟机中。我们可以通过自定义类加载器来实现热加载。例如,`MemoryClassLoader.java`可能就是一个自定义类加载器的实现,它可以在内存中动态加载或更新类。 **JarinJAR**...

    Java实现从jar包中读取指定文件的方法

    在Java编程中,有时我们需要从已经打包的JAR文件中读取特定的资源文件,例如配置文件、图片或库。本篇文章将详细讲解如何在Java中实现从JAR包中读取指定文件的方法。 首先,Java提供了`java.util.jar`包,其中包含...

    java 类从哪个jar包加载的

    Java类是从JAR(Java Archive)包中加载的,JAR文件是Java平台特有的归档格式,用于收集多个类文件、相关的元数据和其他资源(如图像文件或配置文件)到一个单一的文件中,方便分发和运行。 首先,我们来理解一下...

    java 动态加载jar包

    在Java编程语言中,动态加载jar包是一种常见的需求,它允许程序在运行时根据需要加载新的功能或更新现有的模块,增强了软件的灵活性和可扩展性。动态加载jar包技术主要涉及Java的反射机制、类加载器和插件系统。下面...

    java动态编译指定java文件且将java文件生成jar

    结合以上两个部分,我们可以在运行时动态编译Java源代码并生成JAR文件。这在实现某些动态加载或插件系统时非常有用。不过,实际应用中,我们还需要处理更复杂的情况,例如错误处理、资源清理以及编译多个源文件等。...

    java调用外部jar文件

    2. 创建自定义类加载器,重写`findClass()`方法,从jar文件中读取并加载类。 3. 使用加载的类进行实例化和方法调用。 4. 考虑处理外部jar的依赖关系。 在实际开发中,这种动态加载外部jar文件的能力对于构建可扩展...

    JAVA动态加载JAR zip包

    - 使用`java.util.zip`包中的`ZipFile`类来打开和读取ZIP或JAR文件。通过`ZipFile.entries()`获取所有条目,然后遍历这些条目,寻找`.class`文件。 - 对于每个`.class`文件,将其读入字节数组,准备调用`...

    Java URLClassLoader动态加载jar包1

    Java URLClassLoader 是Java标准库中的一个类加载器,它允许我们动态地从指定的URL位置加载类和资源。这个功能在开发插件系统、热部署或者处理多种版本库的场景中非常有用。从JDK 1.2开始,`java.net.URLClassLoader...

    Java加载。jar包

    所有 `ClassLoader` 的最终父级是**系统 ClassLoader**,它默认从本地文件系统加载类。 #### 二、深入理解ClassLoader `java.lang` 包中的 `ClassLoader` 类是Java类加载的核心组件。它的主要职责是在接收到类请求...

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

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

    java打包jar文件实例

    在开发过程中,JAR文件也有助于减少网络传输的时间,因为它们可以被压缩,同时还可以提高程序的加载速度。此外,JAR文件还支持签名,这对于确保代码的安全性和防止篡改至关重要。 在CSDN上发布的文章...

    在可执行jar中载入第三方jar的几个解决方法

    这要求JAR文件的结构支持直接从外部JAR加载类,可能需要将依赖项的类合并到主JAR中。 4. **使用`java.util.ServiceLoader`**:对于依赖于服务提供者接口(SPI)的情况,可以利用`ServiceLoader`来加载第三方JAR提供...

    java 读取jar包文件

    在Java编程中,读取jar包内的文件是一个常见的需求,特别是在运行时动态加载资源或类文件时。Java提供了一种内置的方式,通过`java.util.jar`包中的`JarFile`和`JarInputStream`类来实现这个功能。下面将详细介绍...

    动态加载jar包的实现

    类加载器是Java虚拟机(JVM)的一部分,负责查找并加载类的字节码到内存中。Java默认提供了几个内置的类加载器,如Bootstrap ClassLoader、Extension ClassLoader和AppClassLoaer。然而,为了实现动态加载,我们需要...

    android动态加载jar

    在Android开发中,动态加载JAR(Java Archive)文件是一种常见的技术,它允许应用程序在运行时加载和执行不在原始APK文件中的代码。这种技术有多种应用场景,例如更新功能、热修复、插件化框架等。下面将详细介绍...

    android动态加载jar文件

    然后,通过ClassLoader的loadClass()方法,我们可以动态地加载和执行.jar文件中的类。 总的来说,这个资源提供了一个Android应用动态加载外部jar文件的实践案例,对于想要学习这一技术的开发者来说非常有价值。通过...

    JAR文件包及jar命令详解

    总结来说,JAR文件是Java开发中不可或缺的一部分,无论是为了打包应用程序,还是为了实现库的分发,都提供了极大的便利。了解并掌握如何创建和使用可执行的JAR文件,对Java开发者来说至关重要。通过正确的配置和使用...

Global site tag (gtag.js) - Google Analytics