2016-10-31 14 views
0

Я хочу использовать cglib в клиенте RCP. Клиент RCP создается с использованием maven и tycho plugin. Мы используем очевидную первую стратегию.Как добавить cglib в манифест OSGI клиента RCP?

Это мой MANIFEST.MF:

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: INFO+ RCP Common UI Plug-in 
Bundle-SymbolicName: a.company.prj.rcp.common.ui 
Bundle-Version: 8.0.14.qualifier 
Bundle-Vendor: Schweizerische Bundesbahnen SBB 
Bundle-RequiredExecutionEnvironment: JavaSE-1.7 
Bundle-Activator: a.company.prj.rcp.common.ui.CommonUIPlugin 
Bundle-ActivationPolicy: lazy 
Export-Package: 
a.company.prj.rcp.common.ui, 
... 
a.company.prj.rcp.common.ui.wizards.page 
Import-Package: 
org.apache.log4j;version="1.2.17" 
Require-Bundle: 
org.eclipse.ui;bundle-version="3.7.0", 
org.eclipse.ui.forms;bundle-version="3.5.101", 
com.ibm.ws.jpa.thinclient;bundle-version="8.0.6", 
... 
a.company.prj.rcp.core;bundle-version="8.0.14", 
... 

Чтобы добавить CGLIB я изменил раздел Импорт-пакетов для:

Import-Package: 
net.sf.cglib;version="3.2.0", 
org.apache.log4j;version="1.2.17" 

Теперь Eclipse, жалуется:

No available bundle exports package 'net.sf.cglib' 

Айн идеи о том, как включить cglib в эту среду?

+1

Ну, вам нужен cglib Bundle, который предоставляет этот пакет в вашей среде. В Eclipse вы обычно делаете это с помощью настраиваемой целевой платформы (файл .target, см., Например, этот [Tutorial] (http://www.vogella.com/tutorials/EclipseTargetPlatform/article.html)), который вы также можете ссылаться в своем Tycho build. – stempler

ответ

1

Вам нужно будет добавить пакет cglib на целевую платформу, т. Е. Набор всех пакетов, которые Tycho будет учитывать при разрешении зависимостей. У вас есть три варианта сделать это (взято из Tycho wiki page на эту тему):

  1. Вы можете просто add an entire p2 repository to your target platform.
  2. Вы можете use a .target file и ссылаться на комплект cglib (как уже было предложено stempler).
  3. Вы можете declare a Maven <dependency> по телефону cglib и сделать Tycho «рассмотрите» его.

Поскольку у вас уже есть работающая сборка Tycho, я предлагаю вам использовать любой вариант, который вы или ваши коллеги использовали в сборке раньше.

Еще одно примечание. Варианты 1 и 2 требуют, чтобы пакет cglib был доступен в репозитории p2, тогда как вариант 3 работает, даже если пакет поставляется из «нормального» хранилища Maven, такого как Central Repository. Но во всех трех случаях cglib JAR должен быть действительным расслоение OSGi, то есть включать в себя OSGi MANIFEST.MF с Bundle-SymbolicName т.д.