Пакет GDAL JAVA Binding и собственная библиотека в подключаемом модуле SWT

Я хочу упаковать GDAL и его привязку JAVA в плагин SWT. (P.S. GDAL использует swig для создания привязки Java)

У меня есть все необходимые собственные библиотеки, и я хочу упаковать их в свой подключаемый модуль Eclipse, чтобы другие люди могли использовать его, не устанавливая GDAL на свой компьютер.

Проблема в том, что JAVA Binding (или сама собственная библиотека) будет искать необходимые собственные библиотеки из PATH (Window) или LD_LIBRARY_PATH (Linux) вместо поиска этих библиотек в относительное расположение. Кроме того, GDAL также будет искать некоторые необходимые данные определения местоположения из переменной среды GDAL_DATA .

Как я могу решить эти две проблемы, чтобы создать переносной плагин SWT? 1) пакетные собственные библиотеки для конкретной платформы 2) поиск некоторых переменных среды

Кажется, что eclipse не может разрешить зависимые библиотеки без установки PATH. Bundle-NativeCode (см. Ниже) не работал.

Если я попытаюсь напрямую вызвать System.Library ("SomethingNotExist") в моем плагине; тогда я получаю

java.lang.UnsatisfiedLinkError: no SomethingNotExist in java.library.path

Если я вызываю System.Library ("SomethingDoesExist") в моем плагине, то получаю

java.lang.UnsatisfiedLinkError: SomethingDoesExist.dll: Can't find dependent libraries

файловую структуру в моем плагине

org.gdal/
   + src/
   + nativelib/
      + linux32/
        + ...
      + linux32/
        + ...
      + win32/
        + ...
      + win64/
        + ...
   + META-INF
      + MANIFEST.MF
   + gdal-data/
   + gdal.jar
   + build.properties

Сборка.свойства для этого подключаемого модуля

source.. = src/
output.. = bin/
bin.includes = META-INF/,\
               .,\
               gdal.jar,\
               gdal-data/,\
               nativelib/

Манифест для этого подключаемого модуля

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: GDAL
Bundle-SymbolicName: org.gdal
Bundle-Version: 1.8.1
Bundle-NativeCode: 
 nativelib/linux32/libgdal.so;
 nativelib/linux32/libgdalconstjni.so;
 nativelib/linux32/libgdaljni.so;
 nativelib/linux32/libogrjni.so;
 nativelib/linux32/libosrjni.so;
 osname=Linux; processor=x86,
 nativelib/linux64/libgdal.so;
 nativelib/linux64/libgdalconstjni.so;
 nativelib/linux64/libgdaljni.so;
 nativelib/linux64/libogrjni.so;
 nativelib/linux64/libosrjni.so;
 osname=Linux; processor=x86_64,
 nativelib/win32/gdal18.dll;
 nativelib/win32/gdalconstjni.dll;
 nativelib/win32/gdaljni.dll;
 nativelib/win32/geos_c.dll;
 nativelib/win32/iconv.dll;
 nativelib/win32/libcurl.dll;
 nativelib/win32/libeay32.dll;
 nativelib/win32/libexpat.dll;
 nativelib/win32/libmysql.dll;
 nativelib/win32/libpq.dll;
 nativelib/win32/libxml2.dll;
 nativelib/win32/ogrjni.dll;
 nativelib/win32/openjpeg.dll;
 nativelib/win32/osrjni.dll;
 nativelib/win32/pdflib.dll;
 nativelib/win32/proj.dll;
 nativelib/win32/spatialite.dll;
 nativelib/win32/sqlite3.dll;
 nativelib/win32/ssleay32.dll;
 nativelib/win32/xerces-c_2_8.dll;
 nativelib/win32/zlib1.dll;
 osname=win32; processor=x86,
 nativelib/win64/ogrjni.dll;
 nativelib/win64/gdal18.dll;
 nativelib/win64/xerces-c_2_8.dll;
 nativelib/win64/libexpat.dll;
 nativelib/win64/libpq.dll;
 nativelib/win64/spatialite.dll;
 nativelib/win64/libmysql.dll;    
 nativelib/win64/geos_c.dll;
 nativelib/win64/libcurl.dll;
 nativelib/win64/openjpeg.dll; 
 nativelib/win64/iconv.dll; 
 nativelib/win64/libeay32.dll;
 nativelib/win64/gdaljni.dll;
 nativelib/win64/osrjni.dll; 
 nativelib/win64/gdalconstjni.dll; 
 nativelib/win64/libxml2.dll; 
 nativelib/win64/pdflib.dll;
 nativelib/win64/proj.dll;
 nativelib/win64/sqlite3.dll;
 nativelib/win64/ssleay32.dll;
 nativelib/win64/zlib1.dll; 
 osname=win32; processor=x86_64
Bundle-ClassPath: gdal.jar,
 .,
 gdal-data/
Export-Package: org.gdal,
 org.gdal.gdal,
 org.gdal.gdalconst,
 org.gdal.ogr,
 org.gdal.osr
Bundle-RequiredExecutionEnvironment: JavaSE-1.6

7
задан rnd_nr_gen 31 December 2011 в 10:29
поделиться