Выпуск пакета импорта OSGI - PullRequest
0 голосов
/ 20 февраля 2019

У меня странное поведение в отношении проводки в комплекте.

У меня есть пакет A, которому требуется пакет javax.xml.bind. * Для использования JAXB.TargetPlatform содержит пакет javax.xml.bind_2.2.0XXX.jar, который экспортирует эти пакеты с версией 2.2.0.

Я указываю требуемые пакеты в манифесте пакета A с использованием Import-Package и указываю еговерсия как экспортированная (т.е. 2.2.0).

Итак, я ожидаю, что эти пакеты будут экспортированы пакетом javax.xml.bind.XXX.jar.

Когда я запускаюкод, которому нужны те Jar на JRE, которые не предоставляют javax.xml.bind. *, все работает нормально.

Когда я работаю под другой JRE, которая их не предоставляет, у меня возникает исключение classCastException на JRE /rt.jar.

Во втором случае кажется, что классы из JRE используются вместо классов из комплекта.

Если я изменяю манифест пакета A на Require-Bundle натребуется пакет, все работает нормально.

Когда я использую консольную команду "packages javax.xml.bind", чтобы увидеть, какой пакет предоставляет пакет, я получаю ожидаемый результат (пакет предоставляется системой sys).tem bundle и javax.xml.bind).

Как команда show, системный комплект предоставляет пакет с версией 0.0.0, поэтому его не следует использовать.

У кого-нибудь есть подсказка о том, что я пропустил?

[Результат консоли]

пакетов javax.xml.bind osgi.wiring.package;расслоение-символическое имя-: Список = "org.eclipse.osgi, system.bundle";пачка версия: Version = "3.13.100.v20180827-1536";Версия: Version = "0.0.0";osgi.wiring.package = "javax.xml.bind" osgi.wiring.package;пачке символическое имя = «javax.xml.bind»;расслоение-версии: Version = "2.2.0.v201105210648";Версия: Version = "2.2.0";osgi.wiring.package = "javax.xml.bind"

[Манифест]

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: com.indy.libraries;singleton:=true
Bundle-Version: 19.1.0.qualifier
Bundle-ClassPath: js.jar,
 saxon9.jar,
 saxon9-xpath.jar,
 xml-apis.jar,
 .,
 bsf.jar,
 resolver.jar,
 serializer.jar,
 xercesImpl.jar,
 commons-logging-1.1.jar,
 saxon9-sql.jar,
 saxon9-jdom.jar,
 saxon9-s9api.jar,
 ant.jar,
 ant-contrib-0.6.jar,
 ant-launcher.jar,
 ant-nodeps.jar,
 ant-trax.jar,
 trang.jar,
 lib/global/rmiio-2.0.2.jar
Export-Package: com.indy.libraries,
 com.thaiopensource.relaxng.input,
 com.thaiopensource.relaxng.output,
 com.thaiopensource.relaxng.translate,
 com.thaiopensource.relaxng.translate.util,
 com.thaiopensource.xml.sax,
 net.sf.saxon,
 net.sf.saxon.charcode,
 net.sf.saxon.codenorm,
 net.sf.saxon.event,
 net.sf.saxon.evpull,
 net.sf.saxon.expr,
 net.sf.saxon.exslt,
 net.sf.saxon.functions,
 net.sf.saxon.instruct,
 net.sf.saxon.java,
 net.sf.saxon.jdom,
 net.sf.saxon.number,
 net.sf.saxon.om,
 net.sf.saxon.pattern,
 net.sf.saxon.pull,
 net.sf.saxon.query,
 net.sf.saxon.regex,
 net.sf.saxon.s9api,
 net.sf.saxon.sort,
 net.sf.saxon.sql,
 net.sf.saxon.style,
 net.sf.saxon.sxpath,
 net.sf.saxon.tinytree,
 net.sf.saxon.trace,
 net.sf.saxon.trans,
 net.sf.saxon.tree,
 net.sf.saxon.type,
 net.sf.saxon.value,
 net.sf.saxon.xpath,
 org.apache.tools.ant,
 org.apache.tools.ant.types,
 org.apache.xml.serializer
Import-Package: com.ctc.wstx.stax;version="4.4.0",
 javax.xml.bind;version="2.2.0",
 javax.xml.bind.annotation;version="2.2.0",
 javax.xml.bind.annotation.adapters;version="2.2.0",
 org.codehaus.stax2;version="3.1.4",
 org.eclipse.core.resources,
 org.jdom;version="1.0.0",
 org.jdom.input;version="1.0.0"
Bundle-Vendor: %Bundle-Vendor
Require-Bundle: org.eclipse.ui,
 org.eclipse.core.runtime,
 com.indy.libraries.build;bundle-version="1.0.0",
 com.indy.libraries.engine;bundle-version="1.0.0";visibility:=reexport,
 com.indy.ui.custom.out;bundle-version="17.2.0"
Bundle-ActivationPolicy: lazy
Bundle-Activator: com.indy.libraries.LibrariesPlugin
Eclipse-RegisterBuddy: com.indy.libraries.build,
 com.indy.libraries.engine
Eclipse-ExtensibleAPI: true`enter code here`
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
...