如何解决如何创建一个简单的Java + Maven可插拔应用程序?
我决定使Java桌面应用程序可以通过插件扩展。加载插件的过程如下:应用程序在特定目录中搜索插件jar文件及其描述名称,版本,主类等的描述符,并使用urlclassloader将该插件加载到应用程序中。在这种情况下,插件和应用程序必须连接一个API,该API用于插件和应用程序之间的交互。
我实现了这一点并开始测试。在这种情况下,该应用程序及其插件,API使用Maven
API通过以下方式连接到应用程序和插件:
<dependency>
<groupId>name</groupId>
<artifactId>api name</artifactId>
<version>api version</version>
<scope>system</scope>
<systemPath>${basedir}/api.jar</systemPath>
我将插件加载到应用程序中,如下所示:
loader = new urlclassloader(new URL[] {info.getPluginJar().toURI().toURL()},ClassLoader.getSystemClassLoader());
plugin = (Plugin) loader.loadClass(info.getMainClass()).newInstance();
但是在启动时会发生错误:
线程“ main”中的异常java.lang.NoClassDefFoundError:名称/程序包/ PluginContext
原因:java.lang.classNotFoundException:name.package.PluginContext
我了解该应用程序看不到插件内部使用的API类。我不知道在这种情况下该怎么办。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。