GeoTools/GDAL: Предупреждение: не удалось загрузить собственные библиотеки какаду.

Я пытаюсь использовать GeoTools для чтения файла dted, но у меня много проблем с конфигурацией. Я использую затмение и java. Вот сокращенная версия моего кода:

импортировать org.geotools.coverageio.gdal.dted.DTEDReader;

public class ViewDTED {
public static void main(String[] args) {
try {
DTEDReader reader = new DTEDReader(new File("C:\\temp\\mydted.dt2"));
System.out.println("It worked!");
} catch (Exception e) {
e.printStackTrace();
}
}
}

Когда я запускаю, консоль выдает сообщение «Предупреждение: не удалось загрузить собственные библиотеки Kakadu». Затем он продолжает печатать трассировку стека для UnsatisfiedLinkError.

Мой системный путь включает: C:_path C:\Program Files\gdal-1.9.0 C:\%JAVA_HOME%\bin C:\Program Files\Common Files\ESRI\Raster\bin\ntx86

Последний содержит множество dll, в том числе единственные dll, которые я нашел на своей машине, в имени которых есть какаду.

в C:_path у меня есть это:
gdal19.dll
gdaljni.dll
ogrjni.dll
osrjni.dll
gdalconstjni.dll
gdal.jar

Эти файлы также были скопированы в корень моего проекта eclipse. Мой путь сборки eclipse включает gdal.jar и каждый jar, найденный в C:\Program Files\geotools-2.7.4.

В корне моего проекта eclipse у меня есть это:

gdal19.dll
gdaljni.dll
ogrjni.dll
osrjni.dll
gdalconstjni.dll
kakaducoresys.dll

О да, у меня определена еще одна переменная среды: для GDAL_DATA установлено значение «C:\Program Files\gdal-1.9.0».

Кто-нибудь объясните мне, почему DTEDReader не может найти нужные библиотеки?


person msknapp    schedule 21.03.2012    source источник


Ответы (1)


Убедитесь, что вы не пытаетесь вызвать 32-разрядные библиотеки DLL из 64-разрядного экземпляра JAVA.

Я столкнулся с аналогичной проблемой с Kakadu на сервере Windows, когда пытался заставить Джатоку работать с Fedora Commons. Помимо проблем с путями, основная причина проблемы оказалась в том, что я пытался загрузить бесплатную 32-разрядную версию библиотек Kakadu из Djatoka на 64-разрядный экземпляр Tomcat и 64-разрядную версию JAVA.

Файлы JAVA JNI, похоже, очень требовательны к попыткам взаимодействия с 64/32-битными DLL (или общими объектами), поэтому имитация структуры 64-битной библиотеки для Kakadu с использованием переименованных 32-битных файлов не сработает.

Чтобы решить эту проблему, мне пришлось установить отдельные 32-разрядные версии Tomcat и JAVA на один и тот же сервер Windows, чтобы 64-разрядная версия Fedora Commons могла взаимодействовать с 32-разрядной версией Kakadu через Djatoka.

person Rick Sarvas    schedule 09.08.2012