Кажется, есть только один вопрос такого рода: «>здесь, но решение, предложенное в этом ответе, не сработало для меня. Я использую Spring Tool Suite (по сути, Kepler 4.3.2 SR2) в качестве своей IDE для разработки фрагмента OSGi, который содержит последнюю версию некоторого собственного кода C++. Фрагменты существуют, чтобы учесть возможность существования разных версий программного обеспечения в разных средах, с которыми этот собственный код предназначен для интеграции.
Однако я не могу экспортировать этот фрагмент, по-видимому, из-за пользовательского аргумента vm, который мы используем для представления этого номера версии.
Манифест выглядит примерно так:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Windows 64-bit support for Third-Party XYZ 4.12.7
Bundle-SymbolicName: com.ourcompany.oursoftwarepackage.xyz.win64xyz4127
Bundle-Version: 8.6.2.qualifier
Bundle-Vendor: OurCompany
Fragment-Host: com.ourcompany.oursoftwarepackage.xyz
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Eclipse-PlatformFilter: (& (osgi.os=win32) (osgi.arch=x86_64))
Bundle-NativeCode: xyzintegration.dll; selection-filter = "(oursoftwarepackage.xyzVersion=4.12.7)"
Bundle-ClassPath: .
Ошибка говорит:
Обработка включения из функции org.eclipse.pde.container.feature: Не удалось разрешить пакет com.ourcompany.oursoftwarepackage.xyz.win64xyz4127_8.6.2.qualifier.: Неудовлетворенный фильтр собственного кода: xyzintegration.dll; selection-filter="(oursoftwarepackage.xyzVersion=4.12.7)".
Если я удалю предложение фильтра выбора, то он будет экспортироваться, но фактического артефакта не будет.
Предложение, которое я экстраполировал из приведенной выше ссылки, заключалось в том, чтобы включить vmarg
-Doursoftwarepackage.xyzVersion=4.12.7
в целевой среде разработки плагинов. Это, однако, не удовлетворило структуру OSGi. Теперь я не понимаю, как разрешить фрагмент, чтобы можно было продолжить экспорт.