gpt4 book ai didi

Java - 我自己的插件系统

转载 作者:行者123 更新时间:2023-12-01 19:15:55 24 4
gpt4 key购买 nike

我一直在尝试制作自己的插件系统。我有两个独立的项目。一个用于执行加载的主“程序”,另一个项目用于我的第一个插件。这些插件实现了IPlugin。我在主项目中使用它作为我的加载方法,也在插件项目中使用它,因为我可以为我的类插件实现它们。

然后,我将插件项目转换为 jar 文件,并尝试在运行时通过主项目加载它。问题是这样的:在主项目中它加载得很好,但是当我尝试创建一个实例并将其转换为 IPlugin (因为我可以拥有当前加载的所有插件的列表)时,它说它不能被强制转换为IP插件。我能想到的唯一原因是它无法识别我正在使用的 2 个 IPlugin 接口(interface)(每个项目中 1 个)是相同的接口(interface)。如何在它们之间“链接”IPlugin?我应该将它放在自己的 jar 文件中,然后将其包含在每个项目中吗?

我正在使用 BlueJ 进行开发。

抱歉,如果我没有任何意义......我正在尽力解释情况。如果您需要任何澄清,请告诉我。谢谢!

更新:

我尝试了一个仅用于 IPlugin 的 jar 文件,然后在两个项目中都使用了该 JAR。现在我得到一个 'java.lang.noClassDefFoundError: IPlugin (in java.lang.ClassLoader) 它编译得很好,识别 IPlugin 等,但在运行时它似乎不知道它是什么......

当我调用 URLClassLoader.loadClass() 方法时发生这种情况

最佳答案

您的插件项目(和 jar 文件)不应包含 IPlugin 接口(interface)(或两者所需的任何其他类)。相反,在编译插件时,将已经为主项目编译的类放入编译器类路径中,并让插件类加载器将主类加载器作为父类加载器。

关于Java - 我自己的插件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6708302/

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