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