У меня есть компонент OSGi, который выглядит следующим образом
@Activate
public MyComponent(@Reference OtherServiceA ref1, @Reference OtherServiceB ref2, @Reference OtherServiceC ref3) {
// remainder omitted
}
Аннотация @Reference
больше нигде не отображается в источнике.
Я использую Gradle 5.6 с BND инструменты для создания jar:
// file: build.gradle
plugins {
id 'biz.aQute.bnd.builder'
}
Запуск задачи jar приводит к следующей ошибке:
> Task :my.pro.ject:jar FAILED
error : In component my.pro.ject.mypackage.MyComponent, @Reference cannot be used for method parameters
FAILURE: Build failed with an exception.
и соответствующей трассировке стека
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':my.pro.ject:jar'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:166)
[...]
Caused by: org.gradle.api.GradleException: Bundle my.pro.ject-2.0.0-SNAPSHOT.jar has errors
at aQute.bnd.gradle.BundleTaskConvention.failBuild(BundleTaskConvention.groovy:310)
at aQute.bnd.gradle.BundleTaskConvention$_buildBundle_closure6$_closure7.doCall(BundleTaskConvention.groovy:294)
at aQute.bnd.gradle.BundleTaskConvention$_buildBundle_closure6.doCall(BundleTaskConvention.groovy:200)
at org.gradle.util.ClosureBackedAction.execute(ClosureBackedAction.java:71)
[...]
Я считаю, сообщение об ошибке вводит в заблуждение: следующий код работает хорошо:
@Activate
public MyComponent(@Reference OtherServiceA ref1, @Reference OtherServiceB ref2) { // just removed ref3
// remainder omitted
}
- Я не получаю сообщение об ошибке при удалении 3-й службы, на которую есть ссылки (только первые два)
- Я получаю сообщение об ошибке, когда ссылаюсь на третий компонент, например, при первом или втором параметре.
- Компиляция задач Java работает хорошо - очевидно, нет синтаксиса или нерешена проблема импорта
- Я запустил gradle с
clean
--refresh-dependencies
ничего не работает - Я очистил каталог ~ / .gradle / caches (Windows home path), без эффекта
- Это "не работает" на моей машине "проблема: он работает с" точно "той же настройкой (тот же источник, тот же V выбор ссылок, такой же java и версия Gradle) на других машинах.
Дополнительная информация: - Я использую Java 1.8.151 (32-разрядная версия)