1

我根据本教程开发了一个加载插件的应用程序:http://solitarygeek.com/java/a-simple-pluggable-java-application 但我遇到了一个问题。在我的主应用程序中,我有一个带有静态方法的类,我如何从我的插件内部访问该类?当我尝试从加载的插件访问该类时,它给了我一个找不到类的错误,尽管插件和应用程序正在运行。谢谢

4

3 回答 3

1

在插件架构中,您不应该直接访问插件实现类。您可以使用的接口是您可以访问实现类实例的接口。这显然排除了任何静态方法。将这些方法重构为实例方法并通过接口公开它们。

于 2012-06-28T11:00:18.727 回答
0

听起来像一个类加载器问题。加载插件的类加载器看不到您的主类。没有代码示例很难说。

于 2012-06-28T11:07:38.647 回答
0

我设法通过使用应用程序类加载器作为父类加载器创建类加载器来解决我的问题,如下所示:
URLClassLoader MyLoader = new URLClassLoader(new URL[]{},MyClass.class.getClassLoader()),现在,所有加载的类我的应用程序对使用 MyLoader 加载的插件可见

于 2012-07-17T12:05:00.380 回答