如何解决需求:Import-Package:

时间:2017-07-18 19:42:43

标签: java eclipse apache plugins ant

此问题的范围适用于您在eclipse中根据下面链接的Vogella教程创建RCP应用程序之后。这假设您的功能,产品和父项目已创建。在此状态下,该功能被委派为构建任务,因此需要在功能build.properties文件中解析所有依赖项。

此问题解决了何时需要安装缺少的依赖项,即手动下载,因为缺少的依赖项不在类路径上。类路径确定feature / included-plugins选项卡中可用的插件。功能/包含选项卡中列出的插件可以作为依赖项的插件添加到您的插件中。此列表将附加到您的feature.xml文件中,该文件将链接到您的build.properties文件!请参阅下面的解决方案。

Eclipse命名法交换了plugins = dependencies的思想,并将它们视为相同。我们通过选项卡的名称知道这一点。

此问题的目的是利用现有的Eclipse功能开发RCP应用程序,该应用程序使用来自第三方插件的对象来创建自定义工作流。

抛出此错误是因为我的RCP应用程序第三方插件需要此​​依赖项,该依赖项未包含在Eclipse ICE或插件本身中。

我尝试的第一件事就是直接从Eclipse Marketplace安装插件。

字符串org.apache.commons.beanutils什么都没有返回,所以我去了apache并手动下载了插件。

然后我研究了如何在Eclipse中手动安装插件。

我已经学会了不要简单地将插件放入Eclipse / dropins文件夹中,该文件夹什么都不做。 我已经知道这个建议可能是由于帖子的年龄而缺乏的。 我已经了解到Maven配置正确后,所有依赖关系都可以自动解决。

https://www.eclipse.org/forums/index.php/t/813199/

这表示通过查看四个文件来解决插件依赖性。

"插件定义,产品文件,运行配置和目标定义。"

插件定义我不确定plugin.xml文件以外的内容。产品文件已配置为启动第三方插件。我已经了解到run-configuration有一个插件列表,第三方插件没有在那里列出。

我已经了解到应该在产品项目的父项目中创建目标定义。

通过突出显示您的父项目来创建目标定义 - >右键单击 - >新建 - >其它 - >目标定义。在创建过程中,选择"使用工作区配置。"您下载的插件的路径已添加到此位置。 创建目标后,导航到内容选项卡,然后选择管理使用:功能

这减少了可能的依赖项数量,只减少了运行所需的依赖项。

您现在应该会在列表中看到相关性。

创建目标解决了其他二十个左右的依赖项错误,但标题下的那个仍然会引发错误。

我了解到产品文件是在运行时调用第三方插件的文件。

RCP应用程序启动,但我无法在使用本教程创建的绑定类中导入第三方插件,以用于以编程方式获取对象。

http://www.vogella.com/tutorials/EclipseRCP/article.html

我有一个运行程序的shell,只需要为每个窗口实现类,我可以从第三方插件导入中获取对象。

谢谢,

(溶液)

感谢Brian重置我的想法,这让我更多地了解Eclipse,以便弄清楚这一点。

主要问题是外部.jar被识别为缺少的Import-Package。我的是org.apache.commons.beanutils。您必须访问父网站并下载该库。在这个案例中是apache的网站。回购可能有更好的方法。我希望我可以导出具有所有必需依赖项的产品:p

我可以在这里跳过一两步,但这些是我的工作步骤。

  1. 将.jar导入Eclipse父项目。右键单击父级并选择New-> Folder-> Name it Lib-> Finish。右键单击Lib-> Import-> File System->导航到.jar。突出显示包含的.jars->右键单击 - >构建路径 - >添加到构建路径。

  2. 将缺少的.jar添加到Ant类路径中。 Ant用于使用OSGi构建PDE应用程序。有关说明,请参阅Eclipse帮助。这将允许您丢失的jar在feature-plugins选项卡中变得可见。 Window-> Preferences-> Ant-> Runtime-> ClassPath Tab-> Add jar->导航到丢失的jar

  3. 如上所述在父项目中创建目标定义,并将缺少的.jar添加到目标并将目标设置为活动状态。 如果存在目标,则在“位置”窗口小部件窗口中 - >单击“添加” - >“目录” - >“导航到缺少.jar .->下一步 - >验证插件是否在窗口中识别 - >完成。单击右上角的设置为目标平台。

  4. 在功能子项目中打开feature.xml。 - >点击添加 - >导航到添加的插件 - >点击确定

  5. 全部保存 - 启动产品

  6. 现在进入下一个依赖项!

2 个答案:

答案 0 :(得分:0)

听起来你正在混淆Eclipse插件与你项目的jar依赖项。听起来你的项目需要一个jar(来自Apache的beanutils jar)。根据您的项目是否使用Maven或ant(或其他内容),将其添加到项目中的方式会有所不同。尝试谷歌搜索“在eclipse中为X版本添加jar”,其中X是用于构建的工具(ant,maven等)。无论你使用什么,最终的目标都是让那个jar在Eclipse中为你的项目显示java Build path-> Libraries。

答案 1 :(得分:0)

在我看来,你需要更好地理解OSGI / eclipse中如何管理依赖关系,因此我同意BrianPipa。

请注意:该主题非常大且不易理解,而且太大而无法在此解释。但不要害怕,谷歌是你的朋友:

关于研究主题的几点建议:

  • bundle / plugin和jar的关系
  • 如何将插件中包含的代码导出(也称为可见)到其他插件,以便他们可以使用它以及需要做什么以便使用插件(即声明使用依赖性)?
  • 如何与插件相关的功能?
  • 产品如何与插件和功能相关?
  • 什么是目标平台?
    • 以及如何定义它以及需要包含哪些内容?
    • 我该如何设定?