【问题标题】:GeoTools/GDAL: Warning: Failed to load the kakadu native libsGeoTools/GDAL:警告:无法加载 kakadu 本机库
【发布时间】:2012-03-21 21:40:06
【问题描述】:

我正在尝试使用 GeoTools 读取 dted 文件,但我遇到了很多配置问题。我正在使用eclipse和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:_路径 C:\Program Files\gdal-1.9.0 C:\%JAVA_HOME%\bin C:\Program Files\Common Files\ESRI\Raster\bin\ntx86

最后一个包含很多 dll,包括我在我的机器上找到的唯一一个名称中有 kakadu 的 dll。

在 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 中找到的每个 jar

在我的 Eclipse 项目的根目录中,我有这个:

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

哦,是的,我定义了另一个环境变量:GDAL_DATA 设置为“C:\Program Files\gdal-1.9.0”

有人能解释一下为什么 DTEDReader 找不到必要的库吗?

【问题讨论】:

    标签: java-native-interface gis gdal geotools unsatisfiedlinkerror


    【解决方案1】:

    检查以确保您没有尝试从 64 位 JAVA 实例调用 32 位 DLL。

    当我试图让 Djatoka 与 Fedora Commons 一起工作时,我在 Windows 服务器上遇到了与 Kakadu 类似的问题。除了路径问题,问题的根本原因是我试图从 Djatoka 加载免费的 32 位版本的 Kakadu 库到 Tomcat 的 64 位实例和 64 位版本的 JAVA 上。

    JAVA JNI 文件似乎对尝试与 64/32 位 DLL(或共享对象)进行通信非常挑剔,因此使用重命名的 32 位文件为 Kakadu 伪造 64 位库结构是行不通的。

    为了解决这个问题,我必须在同一台 Windows 服务器上安装单独的 32 位版本的 Tomcat 和 JAVA,以便 64 位版本的 Fedora Commons 可以通过 Djatoka 与 32 位版本的 Kakadu 通信.

    【讨论】:

      猜你喜欢
      • 2013-11-25
      • 1970-01-01
      • 2011-09-25
      • 2023-03-06
      • 2015-08-18
      • 2014-05-06
      • 1970-01-01
      • 2021-08-27
      相关资源
      最近更新 更多