我正在使用Eclipse(Luna)在Windows 7上使用Java进行开发。
我正在使用gdal来处理某些ogr进程并从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,但这并没有改变我得到的错误。
答案 0 :(得分:0)
我发现这篇文章/帖子: http://sandbox.idre.ucla.edu/sandbox/tutorial/installing-gdal-for-windows
它谈到了为Windows设置GDAL,并且比我拥有的包含和引用的蜘蛛网更直接。
我把所有对gdal的引用都从ClassPath和Path中删除了。
然后我只添加了ClassPath上gdal/bin/gdal/java/gdal.jar
的链接和Path上gdal/dll
目录的链接。那就是......这就是你需要做的所有......
有关GDAL_DATA
和GDAL_DRIVERS
的帖子中有提及,我不需要这些,但你可以添加它们以保证安全。
<强>更新强>
需要GDAL_DATA
,只需参考gdal/bin/gdal_data
iirc
我只能推断Eclipse不使用类路径,因此我在ClassPath上添加的额外引用只是让人感到困惑。
答案 1 :(得分:0)
我从
下载了二进制文件由于二进制文件是使用 MSVC 2017 x64 构建的,因此我必须安装
Microsoft Visual C ++ 2017可重新分发
在Windows计算机上解决java.lang.UnsatisfiedLinkError
。
我的较老Gdal Version 2.4.0
与已经存在的Microsoft Visual C++ 2010 Redistributeable