gpt4 book ai didi

java - 从我的项目源代码中存在的 JAR 实现接口(interface)加载一个类

转载 作者:行者123 更新时间:2023-11-28 22:24:53 25 4
gpt4 key购买 nike

我的 Web 应用程序的一个模块有一个 GeneralOperation 接口(interface),我希望其他用户实现该接口(interface)以提供他们自己的功能。

我为包含该接口(interface)的模块创建了一个 JAR,并将其提供给用户。然后,用户可以导入该库并创建一个类 MyCustomOperation 来实现该接口(interface)。最后,他们生成一个包含其实现的 JAR,并将他们的 JAR 放入 tomcat/lib 文件夹中,以便 JVM 可以在运行时看到它。

回到我的应用程序,当我尝试加载他们的 MyCustomOperation 类时,它无法转换为源代码中存在的 GeneralOperation 接口(interface),因为它认为MyCustomOperation 实现的GeneralOperation 是一个不同的接口(interface),而不是现有接口(interface)。

如何解决?

最佳答案

类由其名称和类加载器标识。您的实现 MyCustomOperation 由 tomcat 通用类加载器加载,接口(interface) GeneralOperation 由 tomcat Webapp 类加载器加载。因此,您不能在这两种类型之间进行转换。

为了解决您的问题,

1.你可以使用序列化

2. 或者带你进入 tomcat 公共(public)类加载器(tomcal/lib)和 实现到 webapp(这样你就可以加载类 没有反射(reflection))。

关于java - 从我的项目源代码中存在的 JAR 实现接口(interface)加载一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50949881/

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