[英]apache ivy and nested jar files in osgi bundles
我们有以下使用OSGi捆绑软件的方案:
BundleA导入包“ com.mypackage”。
BundleB导出软件包“ com.mypackage”,但该软件包来自添加到BundleB类路径的嵌套JAR文件。
为了编译OSGi捆绑包并自动解决它们的依赖性,我使用ANT + IVY。
我配置了一个ivy:buildobr任务,它可以正确构建OBR文件(手动检查)。
接下来,我配置了实际的构建任务。
javac引发错误,因为它不了解包“ com.mypackage”。 它仅知道指示JAR文件的类路径,并且不知道如何使用其自己的类路径解释MANIFEST.MF。
问题在于构造的类路径。 它不知道从BundleB中的嵌套JAR中导出的“ com.mypackage”。
您如何解决此类问题?
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: BundleA
Bundle-SymbolicName: BundleA
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: com.mypackage,
org.osgi.framework;version="1.3.0"
Bundle-ClassPath: .
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: BundleB
Bundle-SymbolicName: BundleB
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: org.osgi.framework;version="1.3.0"
Export-Package: com.mypackage
Bundle-ClassPath: .,
nestedJarContainingComMypackage.jar
谢谢
你做不到 javac编译器根本无法理解嵌套在JAR中的JAR。 这是OSGi框架的运行时功能。
要针对这些API进行构建,您将必须提取内部JAR并将其放到构建时的类路径中。 但是,您仍然可以在运行时使用嵌套的JAR。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.