我试图OSGi容器(弹簧-DM)中运行Java高级图像(JAI)。我能当我打电话JAI首次访问JAI库,但收到以下错误:

Error: Could not load mediaLib accelerator wrapper classes. Continuing in pure Java mode.
Occurs in: com.sun.media.jai.mlib.MediaLibAccessor
com.sun.media.jai.mlib.MediaLibLoadException

在DLL是在类路径上并且如在我的清单捆绑-NativeCode库引用。是否有可能运行中的OSGi本地JAI的DLL?如果是这样,我需要做什么?

(编辑:澄清)

我下载的视窗JAI库和提取的JAR和DLL从下载包。

Mainfest:

Manifest-Version: 1.0
Bundle-Name: Java Advanced Imaging
Bundle-SymbolicName: javax.media.jai
Bundle-Version: 1.1.3
Bundle-ClassPath: libs/,
 jai_codec.jar,
 jai_core.jar,
 mlibwrapper_jai.jar
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-NativeCode: libs/mlib_jai_mmx.dll; osname=WindowsXP; processor=x86, 
 libs/mlib_jai_util.dll; osname=WindowsXP; processor=x86, 
 libs/mlib_jai.dll; osname=WindowsXP; processor=x86
Export-Package:
有帮助吗?

解决方案

Bundle-NativeCode块的声明不正确。根据OSGi规范(我强烈建议你下载 - 这是相当直接的),所有库的单一平台应该在同一子句中指定,使其变为:

Bundle-NativeCode: libs/mlib_jai_mmx.dll; libs/mlib_jai_util.dll; libs/mlib_jai.dll; 
 osname=WindowsXP; 
 processor=x86

在一般我不建议使用您自己捆绑体现,如果你能在别处找到他们(这个人是除了本机代码部分非常简单)。在这种情况下,我发现他们其中2个在春季。它不包括本机代码的一部分 - 可能是由于许可证问题

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top