2016-09-14 3 views
2

Я пытаюсь использовать инъекцию зависимостей в моем проекте eclipse. Я включил зависимость maven для org.eclipse.e4.core.di в моем управлении управления зависимостями.Невозможно использовать @Inject в eclipse 4

<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, я вижу ошибку, и я не в состоянии видеть любое импортное предложение также.

Я попытался в том числе следующих в П также

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

Что является причиной этой проблемы? Я использую Java 8.

ответ

2

Для использования @Inject необходимо включить javax.inject в Require-Bundle или Import-Package записей в MANIFEST.MF вашего плагина.

Для этого в редакторе MANIFEST.MF перейдите на вкладку «Зависимости» и добавьте javax.inject в раздел «Обязательные подключаемые модули или импортированные пакеты».

Когда вы сделаете это, вы должны быть в состоянии использовать

import javax.inject.Inject; 

в вашем коде.

Примечание: только классы, созданные из записей в e4 Application.e4xmi, вводятся, если вы не используете ContextInjectionFactory для создания класса.

+0

Спасибо, это работает. Я включил зависимость javax.inject в моем pom и запустил команды osgi, что и то, что вы предлагаете здесь. Итак, ** javax.inject ** не включен ни в один из плагинов, упомянутых в исходном сообщении? –

+0

Нет, это отдельный плагин javax.inject. Различные классы аннотации инъекций распространяются вокруг нескольких плагинов. –

Смежные вопросы