【问题标题】:Not able to use @Inject in eclipse 4无法在 Eclipse 4 中使用 @Inject
【发布时间】:2017-01-22 07:11:04
【问题描述】:

我正在尝试在我的 Eclipse 项目中使用依赖注入。我在我的依赖管理 pom 中包含了 org.eclipse.e4.core.di 的 maven 依赖。

<dependency>
    <groupId>org.eclipse.e4</groupId>
    <artifactId>org.eclipse.e4.core.di</artifactId>
    <version>1.5.0-SDK-4.5.0</version>
</dependency>

而且,在我使用编译范围的依赖注入的插件中。

<dependency>
    <groupId>org.eclipse.e4</groupId>
    <artifactId>org.eclipse.e4.core.di</artifactId>
    <version>compile</version>
</dependency>

在此之后,当我尝试使用注释 @Inject 时,我看到了错误,而且我也看不到任何导入建议。

我也尝试在 pom 中包含以下内容

<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.2</version>
</dependency>

是什么导致了这个问题?我正在使用 Java 8。

【问题讨论】:

    标签: java eclipse dependency-injection eclipse-rcp rcp


    【解决方案1】:

    要使用@Inject,您必须在插件的MANIFEST.MFRequire-BundleImport-Package 条目中包含javax.inject

    要在 MANIFEST.MF 编辑器中执行此操作,请转到 Dependencies 选项卡并将 javax.inject 添加到所需的插件或导入的包部分。

    完成此操作后,您应该可以使用

    import javax.inject.Inject;
    

    在您的代码中。

    注意:只有从 e4 Application.e4xmi 中的条目创建的类才会被注入,除非您使用 ContextInjectionFactory 创建类。

    【讨论】:

    • 谢谢,它有效。我在我的 pom 中包含 javax.inject 依赖项并运行 osgi 命令,这与您在此处的建议相同。那么,javax.inject 没有包含在我在原帖中提到的任何插件中?
    • 不,它在一个单独的 javax.inject 插件中。各种注入注释类分布在许多插件中。
    猜你喜欢
    • 2012-04-19
    • 2015-07-06
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 2015-06-06
    相关资源
    最近更新 更多