【问题标题】:Why can't I get java bindings (GDAL) to work为什么我不能让 java 绑定 (GDAL) 工作
【发布时间】:2021-04-01 12:06:50
【问题描述】:

我下载了 Gdal release-1928-x64-gdal-3-2-1-mapserver-7-6-2-libs.zip 并解压到 C:\Program Files\Gdal_321。
我试图从 gdal-dev 获得帮助已经三周了,但没有任何运气。

我总是得到消息:
本机库加载失败。
java.lang.UnsatisfiedLinkError: C:\Program Files\java-1.8.0-openjdk-1.8.0.201-1.b09.ojdkbuild.windows.x86_64\jre\bin\gdalalljni.dll: 找不到指定的程序
当我尝试执行 System.loadLibrary("gdalalljni")

设置:
带有基于 x64 的处理器的 Windows 10 64 位
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 158 Stepping 13,正版Intel
PROCESSOR_LEVEL=6
我使用的Java是:java-1.8.0-openjdk-1.8.0.201-1.b09.ojdkbuild.windows.x86_64
在 C:\Program Files\Gdal_321 中安装 release-1928-x64-gdal-3-2-1-mapserver-7-6-2-libs.zip

然后我将 gdalalljni.dll 复制到 C:\Program Files\java-1.8.0-openjdk-1.8.0.201-1.b09.ojdkbuild.windows.x86_64\jre\bin
在系统路径中添加了以下内容:
C:\Program Files\java-1.8.0-openjdk-1.8.0.201-1.b09.ojdkbuild.windows.x86_64\jdk-8.0.262.10-hotspot\jre\bin
C:\Program Files\Gdal_321\bin\gdal\java
C:\Program Files\Gdal_321\bin
C:\Program Files\Gdal_321
C:\Program Files\Gdal_321\bin\gdal\apps
C:\Program Files\Gdal_321\bin\gdal\python\osgeo
C:\Program Files\Gdal_321\bin\proj7\apps
C:\Program Files\Gdal_321\bin\ms\apps
C:\Program Files\Gdal_321\bin\gdal\csharp
C:\Program Files\Gdal_321\bin\curl

添加了以下系统变量:
GDAL_DATA=C:\Program Files\Gdal_321\bin\gdal-data
GDAL_DRIVER_PATH=C:\Program Files\Gdal_321\bin\gdal\plugins;C:\Program Files\Gdal_321\bin\gdal\plugins-external;C:\Program Files\Gdal_321\bin\gdal\plugins-可选
JAVA_HOME=C:\Program Files\java-1.8.0-openjdk-1.8.0.201-1.b09.ojdkbuild.windows.x86_64\jre
PROJ_LIB=C:\Program Files\Gdal_321\bin\proj7\share

然后我将 C:\Program Files\Gdal_321\bin\gdal\java\gdal.jar 添加到我的类路径中

当我执行程序时,我得到:
本机库加载失败。
java.lang.UnsatisfiedLinkError: C:\Program Files\OpenJDK\jdk-8.0.262.10-hotspot\jre\bin\gdalalljni.dll: 找不到指定的程序

然后我安装了依赖项 Walker 22_x64。
我不知道如何使用它,但是当我加载 gdalalljni.dll 时,我收到以下错误代码:
See dependecy

【问题讨论】:

    标签: java


    【解决方案1】:

    方法loadLibrary,在类java.lang.System 中搜索作为[System] 属性java.library.path 的值的目录列表,默认情况下,设置为PATH 环境变量的值。

    当你启动你的java程序(使用-D option)或使用load(而不是loadLibrary)方法并提供文件@987654330的完整路径时,要么更改PATH的值,要么显式设置java.library.path @。

    参考How to influence search path of System.loadLibrary() through Java code?

    【讨论】:

    • 谢谢,我尝试将环境路径设置为我有 gdalalljni.dll 的位置,但没有区别。
    • @Paul 打印出java.library.path(系统属性)的值,看看是否出现了包含文件gdalalljni.dll 的目录的路径。另外,你确定这个库的名字是gdalalljni吗?
    • 我有点困惑,当我打印 java.libray 路径时,有两个不同的 java lib 路径:C:/Users/rty/.p2/pool/plugins/org.eclipse。 justj.openjdk.hotspot.jre.full.win32.x86_64_14.0.2.v20200815-0932/jre/bin/server; C:/Users/rty/.p2/pool/plugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_14.0.2.v20200815-0932/jre/bin; C:\Program Files\OpenJDK\jdk-8.0.262.10-hotspot\jre\bin\ 我设置的最后一个,就是gdalalljni.dll所在的位置。是的 gdalalljni.dll 是名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    相关资源
    最近更新 更多