📅  最后修改于: 2023-12-03 15:15:59.747000             🧑  作者: Mango
在 Java 中,在应用程序运行期间可以加载并使用 jar 文件中的类和资源。这就为开发人员提供了更大的灵活性,使得可以在程序运行时根据需要加载所需的类和资源,而不必在程序启动时一次性将所有类和资源全部加载。
Java 中可以使用 URLClassLoader
类来加载 jar 文件。URLClassLoader
类是一个 URL 类型的类加载器,可以加载指定 URL 的类和资源。在加载 jar 文件时,只需要将 jar 文件的 URL 作为 URLClassLoader
的构造函数参数传递进去即可。
加载 jar 文件后,开发人员可以使用 Class.forName()
方法动态获取并使用 jar 文件中的类,也可以使用 getResource()
或 getResourceAsStream()
方法加载 jar 文件中的资源。
以下是一个简单的 Java 代码示例,演示了如何加载一个名为 example.jar
的 jar 文件,并使用其中的一个类和一个资源文件:
import java.net.URL;
import java.net.URLClassLoader;
public class JarLoaderSample {
public static void main(String[] args) throws Exception {
// 加载 example.jar 文件
URL[] urls = new URL[]{new URL("file:/path/to/example.jar")};
URLClassLoader classLoader = new URLClassLoader(urls);
// 使用 example.jar 中的类
Class<?> clazz = classLoader.loadClass("com.example.ExampleClass");
Object obj = clazz.newInstance();
clazz.getMethod("someMethod").invoke(obj);
// 使用 example.jar 中的资源文件
URL resourceUrl = classLoader.getResource("example.properties");
try (InputStream inputStream = resourceUrl.openStream()) {
// 处理文件流
}
// 关闭 classloader
classLoader.close();
}
}
在加载 jar 文件时需要注意以下事项:
file:
协议,否则 URLClassLoader
无法解析 URL;URLClassLoader
,释放占用的资源。以上就是 Java 在运行时加载 jar 文件的基本原理和示例代码。