2012-03-21 40 views
1

我想使用GeoTools來讀取文件,但我有很多配置問題。我使用eclipse和java。以下是我的代碼的刪節版本:GeoTools/GDAL:警告:無法加載kakadu本機庫

import 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(); 
} 
} 
} 

當我運行時,控制檯吐出一條消息「Warning:無法加載Kakadu本地庫」。然後繼續打印一個UnsatisfiedLinkError的堆棧跟蹤。

我的系統路徑包括: C:_path C:\ Program Files文件\ @中-1.9.0 C:\%JAVA_HOME%\ bin中 C:\ Program Files文件\ Common Files文件\ ESRI \柵格\ BIN \ ntx86

最後一個包含了很多dll,包括我在我的機器上找到的唯一一個dll,它們的名字中有kakadu。

用C

:_path我有這樣的:
gdal19.dll
gdaljni.dll
ogrjni.dll
osrjni.dll
gdalconstjni.dll
gdal.jar

這些文件是也複製到我的eclipse項目的根目錄。 我的Eclipse構建路徑包括gdal.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無法找到必要的庫?

回答

0

檢查以確保您沒有試圖從JAVA的64位實例中調用32位DLL。

在試圖讓Djatoka與Fedora Commons合作時,我在Windows服務器上遇到了與Kakadu類似的問題。拋開問題的根源,問題的根本原因是我試圖從Djatoka的64位實例Tomcat和64位版本的JAVA上加載免費的32位版本的Kakadu庫。

對於嘗試與64/32位DLL(或共享對象)進行通信,JAVA JNI文件似乎很挑剔,因此使用重命名的32位文件僞造64位庫結構不適用於Kakadu。

要解決此問題,我必須在同一臺Windows服務器上安裝單獨版本的Tomcat和JAVA的32位版本,以便64位版本的Fedora Commons可以通過通過32位版本的Kakadu Djatoka。

相關問題