2
我們有以下使用OSGi包的情景:apache的常春藤和嵌套的jar文件在OSGi包
BundleA進口包「com.mypackage」。
BundleB導出包「com.mypackage」,但該包來自添加到BundleB類路徑的嵌套JAR文件。
爲了編譯OSGi包並自動解析它們的依賴關係,我使用了ANT + IVY。
我配置了一個ivy:buildobr任務,它正確地構建了OBR文件(手動檢查)。
接下來我配置了實際的構建任務。
- 致電常春藤:解決。我可以清楚地看到IVY正確地解析了包「com.mypackage」。
- 調用ivy:創建編譯類路徑的cachepath。
- 與classpathref = 「compile.classpath」
的javac調用的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
感謝
謝謝。將這樣做:) – smiron