Я хочу упаковать 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