微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何创建一个简单的Java + Maven可插拔应用程序?

如何解决如何创建一个简单的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 举报,一经查实,本站将立刻删除。