Вопрос

Я пытаюсь запустить Java Advanced Imaging (JAI) в контейнере OSGi (spring-dm).Я могу получить доступ к библиотекам 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 находятся в classpath и упоминаются как библиотеки Bundle-NativeCode в моем Манифесте.Возможно ли запустить собственные библиотеки DLL JAI в OSGi?Если да, то что мне нужно сделать?

(редактировать:разъяснения)

Я загрузил библиотеку Windows JAI и извлек JAR-файлы и DLL-файлы из пакета загрузки.

Главный фестиваль:

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