从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文件,并执行其中特定的类方法,这在插件系统、模块化应用或动态扩展性需求中尤为常见。本篇将详细讲解如何实现这一目标。 首先,理解JAR(Java Archive)文件是Java...
默认情况下,JVM会使用系统类加载器来查找和加载类,但我们可以自定义类加载器来实现特定的加载逻辑,比如从特定的jar文件中加载类。 以下是动态加载jar包的基本步骤: 1. **创建自定义类加载器**:首先,我们需要...
在Java中,类加载器负责查找并加载类到Java虚拟机中。我们可以通过自定义类加载器来实现热加载。例如,`MemoryClassLoader.java`可能就是一个自定义类加载器的实现,它可以在内存中动态加载或更新类。 **JarinJAR**...
在Java编程中,有时我们需要从已经打包的JAR文件中读取特定的资源文件,例如配置文件、图片或库。本篇文章将详细讲解如何在Java中实现从JAR包中读取指定文件的方法。 首先,Java提供了`java.util.jar`包,其中包含...
Java类是从JAR(Java Archive)包中加载的,JAR文件是Java平台特有的归档格式,用于收集多个类文件、相关的元数据和其他资源(如图像文件或配置文件)到一个单一的文件中,方便分发和运行。 首先,我们来理解一下...
在Java编程语言中,动态加载jar包是一种常见的需求,它允许程序在运行时根据需要加载新的功能或更新现有的模块,增强了软件的灵活性和可扩展性。动态加载jar包技术主要涉及Java的反射机制、类加载器和插件系统。下面...
结合以上两个部分,我们可以在运行时动态编译Java源代码并生成JAR文件。这在实现某些动态加载或插件系统时非常有用。不过,实际应用中,我们还需要处理更复杂的情况,例如错误处理、资源清理以及编译多个源文件等。...
2. 创建自定义类加载器,重写`findClass()`方法,从jar文件中读取并加载类。 3. 使用加载的类进行实例化和方法调用。 4. 考虑处理外部jar的依赖关系。 在实际开发中,这种动态加载外部jar文件的能力对于构建可扩展...
- 使用`java.util.zip`包中的`ZipFile`类来打开和读取ZIP或JAR文件。通过`ZipFile.entries()`获取所有条目,然后遍历这些条目,寻找`.class`文件。 - 对于每个`.class`文件,将其读入字节数组,准备调用`...
Java URLClassLoader 是Java标准库中的一个类加载器,它允许我们动态地从指定的URL位置加载类和资源。这个功能在开发插件系统、热部署或者处理多种版本库的场景中非常有用。从JDK 1.2开始,`java.net.URLClassLoader...
所有 `ClassLoader` 的最终父级是**系统 ClassLoader**,它默认从本地文件系统加载类。 #### 二、深入理解ClassLoader `java.lang` 包中的 `ClassLoader` 类是Java类加载的核心组件。它的主要职责是在接收到类请求...
Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class...测试示例中是spring boot 的部分代码,动态加载的内容为接口实现类,且初始化时加载本地的实现类,动态加载后改为非程序加载目录中的jar实现类。
在开发过程中,JAR文件也有助于减少网络传输的时间,因为它们可以被压缩,同时还可以提高程序的加载速度。此外,JAR文件还支持签名,这对于确保代码的安全性和防止篡改至关重要。 在CSDN上发布的文章...
这要求JAR文件的结构支持直接从外部JAR加载类,可能需要将依赖项的类合并到主JAR中。 4. **使用`java.util.ServiceLoader`**:对于依赖于服务提供者接口(SPI)的情况,可以利用`ServiceLoader`来加载第三方JAR提供...
在Java编程中,读取jar包内的文件是一个常见的需求,特别是在运行时动态加载资源或类文件时。Java提供了一种内置的方式,通过`java.util.jar`包中的`JarFile`和`JarInputStream`类来实现这个功能。下面将详细介绍...
类加载器是Java虚拟机(JVM)的一部分,负责查找并加载类的字节码到内存中。Java默认提供了几个内置的类加载器,如Bootstrap ClassLoader、Extension ClassLoader和AppClassLoaer。然而,为了实现动态加载,我们需要...
在Android开发中,动态加载JAR(Java Archive)文件是一种常见的技术,它允许应用程序在运行时加载和执行不在原始APK文件中的代码。这种技术有多种应用场景,例如更新功能、热修复、插件化框架等。下面将详细介绍...
然后,通过ClassLoader的loadClass()方法,我们可以动态地加载和执行.jar文件中的类。 总的来说,这个资源提供了一个Android应用动态加载外部jar文件的实践案例,对于想要学习这一技术的开发者来说非常有价值。通过...
总结来说,JAR文件是Java开发中不可或缺的一部分,无论是为了打包应用程序,还是为了实现库的分发,都提供了极大的便利。了解并掌握如何创建和使用可执行的JAR文件,对Java开发者来说至关重要。通过正确的配置和使用...