문제
나는 OSGI 컨테이너 (Spring-DM) 내에서 JAI (Java Advanced Imaging)를 실행하려고합니다. 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은 클래스 경로에 있으며 내 매니페스트에서 번들-나비 코드 라이브러리로 참조됩니다. OSGI 내에서 Native Jai DLL을 실행할 수 있습니까? 그렇다면 어떻게해야합니까?
(편집 : 설명)
다운로드 패키지에서 Windows Jai 라이브러리를 다운로드하고 항아리와 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 개를 찾았습니다. 저장소. 기본 코드 부분이 포함되어 있지 않습니다 - 아마도 라이센스 문제로 인해 아마도.
제휴하지 않습니다 StackOverflow