java - 由 org.gdal.ogr.ogrJNI.GetDriverCount() 引起的 UnsatisfiedLinkError

标签 java windows gdal unsatisfiedlinkerror

我正在使用 Eclipse (Luna) 在 Windows 7 上使用 Java 进行开发。

我正在为一些 ogr 进程使用 gdal,并且从 eclipse 运行应用程序很好,但是从同一台机器上的命令行运行会遇到问题。

我得到以下信息:

Caused by: java.lang.UnsatisfiedLinkError: org.gdal.ogr.ogrJNI.GetDriverCount()I
    at org.gdal.ogr.ogrJNI.GetDriverCount(Native Method)
    at org.gdal.ogr.ogr.GetDriverCount(ogr.java:170)

我已将 gdal 下包含 dll 和 jar 的所有目录添加到 CLASSPATHPATH 环境中。

我认为它可能是库,但我使用的是路径中的部署位置,它在 eclipse 中有效。

在 eclipse 项目的 .classpath 文件中,我注意到 gdal 引用有一个名为 CLASSPATH_ATTR_LIBRARY_PATH_ENTRY 的属性,它链接到 gdal\dll 目录,但我已经将其包含在路径中:

<classpathentry exported="true" kind="lib" path="dependencies/gdal/bin/gdal/java/gdal.jar">
    <attributes>
        <attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="dependencies/gdal/dll"/>
    </attributes>
</classpathentry>

这是我能看到的唯一区别。您如何在 Windows 机器上复制它,或者它是由 CLASSPATH 和 PATH 处理的?

我需要引用单独的 dll 吗?我已经尝试了通常与 gdal.jar 一起使用的 4 个,但这并没有改变我得到的错误。

最佳答案

我找到这篇文章/帖子: http://sandbox.idre.ucla.edu/sandbox/tutorial/installing-gdal-for-windows

它讨论了为 Windows 设置 GDAL,比我拥有的包含和引用的蜘蛛网更直接。

我从 ClassPath 和 Path 中删除了所有对 gdal 的引用。

然后,我仅在 ClassPath 上添加了指向 gdal/bin/gdal/java/gdal.jar 的链接,并在 Path 上添加了指向 gdal/dll 目录的链接.就是这样......这就是你需要做的......

帖子中提到了 GDAL_DATAGDAL_DRIVERS,我不需要这些,但为了安全起见,您可以添加它们。

更新 需要GDAL_DATA,引用gdal/bin/gdal_data iirc

我只能推断 Eclipse 不使用类路径,所以我在 ClassPath 上放置的额外引用只是令人困惑的事情。

关于java - 由 org.gdal.ogr.ogrJNI.GetDriverCount() 引起的 UnsatisfiedLinkError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32573954/

相关文章:

c - 如何循环 <windows.h> system ("color") 命令以使命令提示符快速改变其颜色?

java - 使用 spring 3 mvc 框架创建基本表单

java - 这里会创建多少个 String 对象?

java - 有没有办法消除 Java 中早期方法返回的冗余检查?

windows - 为什么 Win32::ODBC 在 Perl 5.10 和 Cygwin 下找不到 ODBC.dll?

windows - 批处理脚本循环遍历数组并将值用作exe的参数

python - 如何获取 geotiff 中单元格的坐标?

r - 如何将 terra R 包与需要身份验证的云优化 geotiff 结合使用?

c - 通过 GDAL GDALAutoCreateWarpedVRT 在 C 中重新投影

Java - 使用 ReentrantLock 异步运行作业?