我对捆扎布线有好奇的行为。
我有一个包A,它需要javax.xml.bind。*包才能使用JAXB。 TargetPlatform包含软件包javax.xml.bind_2.2.0XXX.jar,该软件包将导出版本为2.2.0的那些软件包。
我使用Import-Package在包A清单中指定所需的包,并指定与导出的版本相同(即2.2.0)。
因此,我希望这些软件包是捆绑包javax.xml.bind.XXX.jar导出的软件包。
当我在JRE上运行需要Jar的代码时,这些代码不提供javax.xml.bind。*,一切正常。
当我在另一个不提供它们的JRE下运行时,则在JRE / rt.jar上有classCastException。
对于第二种情况,似乎使用了JRE中的类,而不是捆绑软件中的类。
如果我在必需的捆绑包上将捆绑包A清单更改为Require-Bundle,则一切正常。
当我使用控制台“ packages javax.xml.bind”命令查看提供该软件包的捆绑软件时,我得到了预期的结果(该软件包由系统捆绑软件和javax.xml.bind提供)。 / p>
如命令所示,系统捆绑包确实提供了版本0.0.0下的软件包,因此不应使用它。
有人对我错过了什么有任何线索吗?
[控制台结果]
将javax.xml.bind打包 osgi.wiring.package; bundle-symbolic-name:List =“ org.eclipse.osgi,system.bundle”; bundle-version:Version =“ 3.13.100.v20180827-1536”;版本:Version =“ 0.0.0”; osgi.wiring.package =“ javax.xml.bind” osgi.wiring.package; bundle-symbolic-name =“ javax.xml.bind”; bundle-version: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