【问题标题】:When debugging my Eclipse plugin, the repository version of the Java file is chosen over my local version在调试我的 Eclipse 插件时,Java 文件的存储库版本被选择而不是我的本地版本
【发布时间】:2019-12-01 15:15:13
【问题描述】:

我正处于在 Eclipse 2019-06 中创建新 Eclipse 插件的早期阶段。我使用“Hello World”向导选项创建了插件,并创建了一个调试配置,成功启动了辅助工作台进行测试。我可以点击我的新菜单选项并进入我的新代码。

我想使用org.eclipse.jdt.junit.wizards.NewTestCaseWizardPageOne的修改版本,所以我将包添加到我的项目中并编辑了NewTestCaseWizardPageOne。但是,当我尝试调试时,调试器会询问源位置。似乎想从本地存储库(.p2/pool/plugins/org.eclipse.jdt.junit_3.11.400.v20190510-0840.jar)加载文件,而不是我编辑的版本。这是为什么?

一定有某种类路径问题,但是项目中的文件版本不优先于依赖插件中的文件吗?我查看了许多类似的问题(12)和其他来源,但我还没有找到答案。请帮忙。

【问题讨论】:

  • 注意:您不能替换现有向导中的页面。这是行不通的。
  • @greg-499 - 谢谢。我实际上只是想使用一些导入编写功能而不是 GUI。我遇到了问题,但这可能是一个不同的问题。 :o
  • 为什么要尝试使用原始的org.eclipse.jdt.... 包名?您无法轻松替换现有插件的部分内容。
  • @greg-499 我正在尝试访问包私有功能。更新我正在尝试使用/扩展其功能的插件的最佳解决方案是什么?顺便说一句,我的插件是本地使用的,不是作为分布式产品使用的,所以我愿意偷工减料,接受一些笨拙。
  • 您可以尝试为 org.eclipse.jdt.ui 包创建一个片段并在那里创建您的类

标签: eclipse eclipse-plugin


【解决方案1】:

按照 Alexander Federov 的建议,我将插件转换为片段。按照StackOverflow page 的建议,这很容易做到。主要变化是:

  • 将 plugin.xml 重命名为 fragment.xml 并更改了顶级 xml 从插件到片段的元素。
  • 向 MANIFEST.MF 添加了 Fragment-Host 条目

这个提供的关键优势在 Eclipse Wiki page 中进行了讨论:

...一个片段出现在 和普通插件一样。片段可以指定库, 扩展名和其他文件。当它被平台加载器加载时, 片段在逻辑上而不是物理上合并到主机中 插入。最终结果与片段的完全一样 清单被复制到插件清单中,并且所有文件都在 片段目录看起来好像它们位于插件的 安装目录。因此,由片段提供的运行时库 出现在其宿主插件的类路径中。事实上,一个Java类在 片段可以与宿主中的类在同一个包中,并且将 甚至可以访问宿主类的包可见方法

与访问包可见方法有关的最后一部分是我需要的。谢谢,亚历山大!

【讨论】:

    猜你喜欢
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    相关资源
    最近更新 更多