当前位置: 首页 > 知识库问答 >
问题:

Eclipse插件扩展点和扩展仅在调试环境中工作

孙熠彤
2023-03-14

我有一个eclipse插件,创建了一个新的扩展点,所有设置都显示在链接中:http://www.vogella.com/tutorials/EclipseExtensionPoint/article.html

现在使用这个扩展点创建了一个带有扩展的新插件,也显示在上面的链接中。现在,当我在调试环境中运行它时,一切正常,但当我将这两个插件从Eclipse导出到插件jar文件,并将其用于我的应用程序时,它失败了。

以下是我从Eclipse网站获得插件信息的代码:

       IExtensionRegistry reg = Platform.getExtensionRegistry();
       IExtensionPoint ep = reg.getExtensionPoint("com.proper.package.ProperExtPointId");
       IExtension[] extensions = ep.getExtensions();
       contributors = new ArrayList();
       for (int i = 0; i < extensions.length; i++) 
       {
          IExtension ext = extensions[i];
          IConfigurationElement[] ce = 
             ext.getConfigurationElements();
          for (int j = 0; j < ce.length; j++) 
          {
             Object obj = ce[j].createExecutableExtension("ProperExtPointClass");
             contributors.add(obj);
          }
       }

代码失败,在Core异常:org.eclipse.core.runtime.Core异常: Plug-in TempPlugin5无法加载类com......(这是实现具有扩展点的插件接口的类)...造成的原因:java.lang.NoClassDefFoundError: com。IInterface

当在Eclipse中运行这些插件并加载所有依赖插件时,所有这些设置都可以正常工作,但当导出到我的应用程序中用作插件jar时,这些设置会失败。

尝试远程调试后,代码在以下行失败:

Object obj = ce[j].createExecutableExtension("ProperExtPointClass");

我试图寻找这类双方都找不到的问题。我觉得我缺少了Eclispe在调试时可用的一些依赖项,但在导出插件以使用完整应用程序时不可用。

总而言之:Plugin1具有扩展点和接口。以及使用这个扩展点的PLugin2(依赖于Plugin1),并实现Plugin1的接口。根据Stacktrace:Plugin2无法看到Plugin1的接口。我在Plugin1的“运行时”选项卡中的“导出包”中有接口包。

蒂娅。

共有1个答案

谷梁晟
2023-03-14

你的插件可能不包含正确的依赖项。在调试时没有仔细检查依赖关系,所以这个问题会在发布版本中出现。

在你的插件清单中。MF您必须使用Require Bundle列出您依赖的插件,或者可以使用Import Package列出您依赖的Java软件包。

可以在清单中设置这些值。“依赖项”选项卡上的MF编辑器。

还要注意的是,如果你的插件中包含任何额外的JAR,那么它们必须列在bin中。包括构建的部分。属性文件。

 类似资料:
  • 扩展程序可以利用 Chrome DevTools 为网页提供的一样的调试优势,但它们具有独特的行为属性。成为主扩展调试器需要了解以下行为,扩展组件如何相互配合以及在哪里处理错误。本教程使开发人员对调试扩展有基本的了解。 找到日志 扩展由许多不同的组件组成,这些组件有各自的职责。在此处下载损坏的扩展程序,以开始查找不同扩展程序组件的错误日志。 后台脚本 Background Script 访问 ch

  • 如果默认的调度器不满足要求,还可以部署自定义的调度器。并且,在整个集群中还可以同时运行多个调度器实例,通过 podSpec.schedulerName 来选择使用哪一个调度器(默认使用内置的调度器)。 开发自定义调度器 自定义调度器主要的功能是查询未调度的 Pod,按照自定义的调度策略选择新的 Node,并将其更新到 Pod 的 Node Binding 上。 比如,一个最简单的调度器可以用 sh

  • 我正在尝试使用maven assembly插件生成zip文件程序集。我只剩下两个问题,我想知道是否有可能仅仅通过配置来解决,但作为最后的手段,我也在考虑编写自己的maven插件来扩展maven assembly插件 丢失的两块是 > 将与include模式匹配的每个依赖项放入其自己的 这是我的程序集的相关部分 这将使用

  • Kubernetes在设计之初就充分考虑了可扩展性,很多资源或操作都可以通过插件来自由扩展,比如认证授权、网络、Volume、容器执行引擎、调度等。

  •        扩展插件为LSV(LocaSpaceViewer)的扩展应用中心。扩展插件会定期更新各种实用小工具,方便广大朋友使用。插件功能可以独立获取授权,购买授权后,可以在LSV软件内直接使用。授权只和账号绑定,与所用电脑无关。 坐标地址批处理工具 功能介绍        地理编码指将结构化内容转换为经纬度坐标,逆地理编码指将经纬度坐标转换成结构化地址。使用该功能模块,可以快速批量把Excel

  • Simditor only integrates key features and uses extensions to support some optional features. Send your repository to us! We are happy to receive your extensions! Please make your extension has the sim