【问题标题】:Error when opening file gdal java打开文件gdal java时出错
【发布时间】:2016-10-12 21:10:39
【问题描述】:

我正在尝试使用 gdal api (java) 加载 geotiff 文件。这是我的测试代码。

public class App 
{
    public static void main( String[] args )
    {
        gdal.AllRegister();
        Dataset dataset = gdal.Open("output.tif");
    }
}

但我有一个错误

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.gdal.gdal.gdalJNI.Dataset_SWIGUpcast(J)J
at org.gdal.gdal.gdalJNI.Dataset_SWIGUpcast(Native Method)
at org.gdal.gdal.Dataset.<init>(Dataset.java:20)
at org.gdal.gdal.gdal.Open(gdal.java:585)
at org.gdaltest.projection.App.main(App.java:18)

我使用的是maven项目,所以我添加了gdal依赖

<dependency>
    <groupId>org.gdal</groupId>
    <artifactId>gdal</artifactId>
    <version>2.1.0</version>
</dependency>

我使用的是 Windows 10 并安装了 gdal 2.1.0。我已经在路径中设置了环境变量 GDAL_DATA 和 Gdal 目录。

我错过了什么吗?

【问题讨论】:

    标签: java gdal geotiff


    【解决方案1】:

    我解决了这个问题。我将位于存储库 maven (C:\Users\Myuser.m2\repository\org\gdal\gdal\2.1.0) 中的 jar 文件替换为位于 gdal 文件夹 (C:\Program Files\GDAL) 中的 jar 文件。现在它可以工作了。

    【讨论】:

    • 我的意思是 C:\Program Files\GDAL\java 中的 jar 文件
    【解决方案2】:

    在处理原生库时,可怕的 UnsatisfiedLinkErrors 是相当常见的问题。

    通常您需要设置 java.library.path VM 参数,以便 Java 可以找到本机库。

    See an example here

    Another gdal related unsatisfied link error issue here

    【讨论】:

    • 执行没有问题
    • 我执行没有问题g ogr.RegisterAll(), gdal.AllRegister(), gdal.VersionInfo()。但是当我使用方法 gdal.open("") 时我仍然有同样的错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多