1. io.test包
创建MyMain.java
类,创建addJarToClasspath
方法将jar包动态加载进系统的classpath中
package io.test;
import java.io.File;
import java.net.URL;
import java.net.URLClassLoader;
import java.lang.reflect.Method;
public class MyMain {
public static void addJarToClasspath(String jarFilePath) throws Exception {
File file = new File(jarFilePath);
URL url = file.toURI().toURL();
// 获取当前线程的类加载器
URLClassLoader classLoader = (URLClassLoader) Thread.currentThread().getContextClassLoader();
// 通过反射调用 URLClassLoader 的 addURL 方法
Method method = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
method.setAccessible(true);
method.invoke(classLoader, url);
}
public static void main(String[] args) {
try {
addJarToClasspath("path\\\to\\\\adder.jar");
System.out.println("JAR file added to classpath.");
} catch (Exception e) {
e.printStackTrace();
}
MyAdder adder = new MyAdder();
System.out.println(adder.add());
}
}
创建MyAdder.java
类,该类中会调用动态加载至classpath的jar包中的类
package io.test;
import org.calculation.Adder;
public class MyAdder {
Adder adder = new Adder();
public int add() {
return adder.add(10, 15);
}
}
2. org.calculation包
创建Adder.java
类
package org.calculation;
public class Adder {
public int add(int a, int b) {
return a + b;
}
}
3. 打包
- 将
org.calculation
包打包为adder.jar
包 - 将
io.test
包打包为mymain.jar
包,并设置为可通过java -jar mymain.jar
运行的文件
4. 执行
调用以下命令即可将adder.jar
包动态加载进系统的classpath中,并调用该包中的类
java -jar mymain.jar