Eclipse plugin 从JAR文件加载插件

Eclipse plugin 从JAR文件加载插件,eclipse-plugin,Eclipse Plugin,我需要在JAR中放置一个插件(带有UI)。从另一个插件UI(通过eclipse菜单)我需要在jar中显示插件的UI。可能吗?我的意思是以编程方式动态加载另一个插件。是的,这是可能的 大概是这样的: BundleContext bundleContext = Platform.getBundle("your-plugin-id").getBundleContext(); FileInputStream is = new FileInputStream(file); String name = "i

我需要在JAR中放置一个插件(带有UI)。从另一个插件UI(通过eclipse菜单)我需要在jar中显示插件的UI。可能吗?我的意思是以编程方式动态加载另一个插件。

是的,这是可能的

大概是这样的:

BundleContext bundleContext = Platform.getBundle("your-plugin-id").getBundleContext();
FileInputStream is = new FileInputStream(file);
String name = "initial@" + file.toURI().toURL().toString();
Bundle b = bundleContext.installBundle(name, is);
b.start();

但我不认为这是你想做的。只需在Eclipse插件和JAR文件之间创建一个依赖项。然后,当用户单击菜单并触发操作时,您只需像平常一样从jar文件启动UI

多谢各位。我是否需要在Eclipse插件和JAR文件之间创建一个依赖项,以便代码正常工作?一旦用户在列表框中选择插件描述,我提到的插件JAR文件就会从数据库下载。所以我们不能创建依赖项,对吗?@user3544081如果插件在构建/编译时不可用,您就不能创建依赖项。上面的代码示例只需要一个文件来安装它。是否需要get bundle上下文(您提供的示例代码的第1行)才能成功。如果我关闭了插件(JAR one)项目,我会得到NullPointerException。@Kumar NPE意味着找不到捆绑包。它还没有被解决,也就是说,它不可用或者依赖项阻止它加载。您可能需要将它分成两行,第一行是“Platform.getBundle(“您的插件id”),并检查它是否返回null。谢谢您的回复。“Platform.getBundle(“您的插件id”)返回null。我觉得不存在依赖性问题,因为以前在工作区中打开项目(JAR项目)时,依赖性就起作用了。如果该插件可用于或可解析此方法调用,那么我需要做什么?我的意思是不在工作空间打开项目。如果您需要回答任何其他信息,请告诉我。