我正在使用 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 的所有目录添加到 CLASSPATH
和 PATH
环境中。
我认为它可能是库,但我使用的是路径中的部署位置,它在 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_DATA
和 GDAL_DRIVERS
,我不需要这些,但为了安全起见,您可以添加它们。
更新
需要GDAL_DATA
,引用gdal/bin/gdal_data
iirc
我只能推断 Eclipse 不使用类路径,所以我在 ClassPath 上放置的额外引用只是令人困惑的事情。
关于java - 由 org.gdal.ogr.ogrJNI.GetDriverCount() 引起的 UnsatisfiedLinkError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32573954/