java - Eclipse 插件代码找不到 "javax.inject.Inject"类,插件 jar 现在不在插件目录中

标签 java eclipse eclipse-plugin

我正在尝试调试一个 Eclipse 插件,该插件在 2019-09 时间范围内出现了一个错误。平台中一定发生了某些变化,导致它不再工作。

我可以运行 rcp 2018-12 发行版并测试它,并验证它是否有效。我能够单步执行处理程序代码。

如果我运行 2019-12 发行版,我无法完全编译该项目,因为它显示“无法解析类型 javax.inject.Inject。”。当我尝试在 2018-12 发行版中打开类型 javax.inject.Inject 时,它在“eclipse/plugins/javax.inject_1.0.0.v20091030.jar”中找到它“在发行版中。当我检查“plugins”目录时,我发现了很多单独的插件 jar。

在 2019-12 发行版中,它找不到 javax.inject.Inject,当我查看该插件目录时,我只找到一个 jar,即“org.eclipse.jar”。 equinox.launcher”jar。

我记得单个启动器 jar 的这个主题,但我不知道这是否是此编译错误的直接原因,或者我必须做什么才能继续前进。

更新:

为了回应备受赞赏的答案,我发现了以下内容:

我确实找到了 ~/.p2 目录,并且在那里找到了 javax.inject 插件。当我检查“目标平台”设置时,我在 2018-12 和 2019-12 实例中看到非常相似的信息(插件数量变化很小)。

我检查了所有 MANIFEST.MF 文件,没有一个文件具有单个“Import-Package”语句。我知道建议是添加一个,但我想了解为什么我在 2018-12 年没有看到错误。

当我查看项目资源管理器中的“插件依赖项”列表时,我在 2018-12 的列表中看到“javax.inject”,但在 2019-12 中没有看到它。

当我选择 MANIFEST.MF 文件并在表单模式下查看它并选择“依赖关系分析”,然后选择“显示插件依赖关系层次结构”时,我可以看到“org.eclipse.core.runtime” ,2018-12 的版本 3.15... 和 2019-12 的版本 3.17... 具有不同的依赖关系。特别是,在 3.15 中,依赖项之一是“javax.inject”。在 3.17 中,这不是它的依赖项之一。

所以,我可以看到一个可能的解决方案肯定是为“javax.inject”添加一个“Import-Package”,但是您能否解释一下为什么没有一个 MANIFEST.MF 文件具有单个“Import” -Package”声明尚未发布?

最佳答案

如果您使用的是通过 Oomph 安装程序安装的 Eclipse,则插件可以位于不同的位置(我认为是您的主目录中的 .p2 目录)。 javax.inject 插件应该仍然与所有其他 Eclipse 插件一起存在。

插件通常在 MANIFEST.MF 中使用 Import-Package 引用 javax.inject,而不是使用 Require-Package 指定所需的插件,因此:

Import-Package: javax.inject

2018-12 至 2019-12 年间,该领域没有任何重大变化。 javax.inject的版本还是一模一样的。

检查您配置为目标平台的内容(首选项 > 插件开发 > 目标平台) - 这决定了哪些插件可用。

更新: 您现在需要添加 Import-Package 的原因是 Eclipse bug 487676 所做的更改。它从 org.eclipse.core.runtime 中删除了 javax.inject 依赖项的“重新导出”,因此您现在必须显式添加它。这也记录在 Whats New 中适用于 Eclipse 2019-09 (4.13)

关于java - Eclipse 插件代码找不到 "javax.inject.Inject"类,插件 jar 现在不在插件目录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59505074/

相关文章:

java - 当为我的类调用隐式 toString() 时,我可以列出所有情况吗?

java - jgit - 克隆存储库会使用我的默认 umask 权限而不是存储库中的权限创建文件

java - HSQL 中的 H2 RUNSCRIPT 等效项

java - 使用 Eclipse Developer Studio 启动 wso2 ESB 服务器时出现无效的初始堆大小错误

java - 在运行时以自定义方式(反)序列化 Bean

java - AlarmManager android调用具体方法

java - 如何在eclipse中创建两个项目指向一个源文件夹

eclipse-plugin - 如何向 Eclipse RCP 工具栏添加间隔符?

Android ADT 18 中的 android 依赖项注释.jar

Eclipse RCP : programmatically associate file type with Editor?