gpt4 book ai didi

java - JAR 插件实现

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:59:43 27 4
gpt4 key购买 nike

让我们有一个 Groovy/Java 应用程序,它应该使用一组在外部 *.jar 文件中定义的类(假设它们位于主要可执行 jar 附近)。

因此,主类(让我们称它为 Main)应该在运行时加载 plugin.jar 文件并调用该类中定义的一些实例方法,在该 jar 中定义(对于某些约定,假设该类的名称作为其 jar - Plugin 在我们的例子中)。

Main 类在运行之前无法知道它拥有哪些插件。让我们扔掉 CLASSPATHjava -jar 运行参数,只用代码来施展魔法。

那么,如何做到这一点以及如何创建 plugin.jar(在我的例子中使用 Eclipse)以便正确加载?

PS: 是的,我确实将我的 groovy 源代码编译成 jar 文件。但我需要执行类加载并即时调用。

最佳答案

secret 真的很简单!

使用 URLClassLoader 就可以了。

因此,Groovy 代码:

ClassLoader loader = new URLClassLoader((URL[]) [
new File("C:\\Users\\errorist\\workspace\\javatest1\\bin\\").toURI().toURL()
])

Class c = loader.loadClass("src.SomeClass1")

c.invokeMethod("main", (String[]) ["Hello", "World"])

还有 Java 一个:

File file = new File("C:\\Users\\errorist\\workspace\\javatest1\\bin\\");
URL[] urls = new URL[] { file.toURI().toURL() };
ClassLoader loader = new URLClassLoader(urls);
Class c = loader.loadClass("src.SomeClass1");
c.invokeMethod("main", new String[] { "Hello", "World!" });

关于java - JAR 插件实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8546467/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com