Java 动态加载 jar 的方法

2021/8/23 9:28:38

本文主要是介绍Java 动态加载 jar 的方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

虽然这是 kotlin 但本质上都一样啦

加载代码

import java.io.File
import java.net.URLClassLoader

object Main {
    @JvmStatic
    fun main(args: Array<String>) {
        val clazzFile = File("test.zip")
        val classLoader = URLClassLoader(arrayOf(clazzFile.toURI().toURL()), URLClassLoader.getSystemClassLoader())
        val clazz = classLoader.loadClass("com.test.Test")
        val instance = clazz.getConstructor().newInstance()
        val method = clazz.getMethod("count", Array<String>::class.java)
        println(method.invoke(instance, arrayOf("1", "2", "3")))
    }
}

Test 类代码

package com.test;

public class Test {
    public int count(String... args) {
        return args == null ? -1 : args.length;
    }
}

运行结果

3

进程已结束,退出代码为 0

基本步骤就是

  1. 使用要加载的 jar 做参数,初始化 URLClassLoader
  2. 使用上一步的 classLoaderloadClass 方法加载要加载的 jar 里的 类
  3. 通过反射调用上一步加载的类里的方法

顺便再记录一下 Kotlin 反射传入可变参数的方法
使用 Array 的泛型就好

Array<String>::class.java


这篇关于Java 动态加载 jar 的方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程