• 使用java开发gdal相关配置,版本为2.4.0


    前言

    使用java开发gdal对于初学者并不是很友好,因为gdal是用c++写的,java引入的包不过是一个壳子,真正起作用的的安装的c++库。java是不能直接使用c++库的,但是可以调用c++程序所编译出来地动态库。动态库在windows为dll文件,linux上为so文件,所以只要将对应的动态库文件放在java程序可以调用到的地方就可以。那么如果获取到对应的动态库,把他们放在什么位置,自己去摸索的时候会特别费时间,希望这边文章可以帮助到在黑夜中徘徊的人,也可以帮助到我自己。

    windows系统配置

    1. 获取dll文件

    gdal编译库下载,我下载的版本是2.4.0的。需要的dll文件有:

    • release-1900-x64-gdal-2-4-4-mapserver-7-4-3\bin\gdal\java 文件内gdalalljni.dll
    • release-1900-x64-gdal-2-4-4-mapserver-7-4-3\bin 当前目录下所有的dll文件

    2. 放置到对应位置

    我所尝试的java程序可以解析的位置有两个:

    • 项目的根目录,这么多的dll放在根目录下,显得很不专业。
    • jdk_home/jre/bin目录,放在这里看起来舒服多了

    在我们引入gdal.jar包开发完,运行的时候所遇到的问题有:

    • 找不到gdallalljni.dll模块
      如果gdalalljni.dll文件放在了对应的位置,这个时候还找不到,那么有可能是程序运行的时候没有用到这个jre。我开发的时候就遇到过这个问题,用的是idea编辑器。idea编辑器在运行的时候有个默认的jre,这个jre不是我安装的jdk里面的jre,所以肯定是识别不了里面的dll的

    • 找不到gdalalljni.dll的依赖
      如果是找不到gdalalljni.dll的依赖,那么是说可以找到gdalalljni.dll只是它所依赖的其他dll有缺失的。那么到底缺失了哪些,不能靠猜测,这里有个查看dll依赖的工具。下载后,找到DependenciesGui.exe打开软件,导入gdalalljni.dll,则可以查看所有的依赖情况。

    linux系统配置

    1. 获取so文件

    so文件是gdal源码在linux系统上编译出来的文件,如果你对linux系统足够熟悉,而且愿意花时间的话可以自己去尝试。我最终采用的方式是从别人编译好的文件拷过来的,是可以直接使用的(链接:https://pan.baidu.com/s/1iAYqhiBi8EDP1UVhffdLzA 提取码:bd2w)。因为我也自己尝试过去编译,只是自己的处理问题的能力实在太差,最后还是不了了之。虽然没有编译成功,但是知道如果想自己动手编译需要实现了解这些知识点:

    2. 放置到对应的位置

    linux系统默认的识别动态库的位置有 /usr/lib64, 所以我就把获取到的so文件拷贝到该目录下。那么如何检测拷入的文件是完整无误的呢,通过命令ldd libgdalalljni.so可以列出 libgdalalljni.so所有的依赖,如果所有的依赖都能找到,那么就可以了。如果有缺失的怎么办呢?那么就需要安装对应的类,可以通过yum安装,也可以通过源码安装。通常需要安装的库有boost等。

  • 相关阅读:
    AngularJS定时器任务
    ssh常用
    HTTPClient模块的HttpGet和HttpPost
    eclipse下设置tomcat,修改Java代码不必重启tomcat
    【转】调试Release发布版程序的Crash错误
    C/C++ 函数压栈方式
    PHP 安全三板斧:过滤、验证和转义之转义篇 & Blade模板引擎避免XSS攻击原理探究
    让 MySQL 支持 emoji 存储
    Laravel 5.1 中创建自定义 Artisan 控制台命令实例教程
    常见的Web实时消息交互方式和SignalR
  • 原文地址:https://www.cnblogs.com/asdlijian/p/16121174.html
Copyright © 2020-2023  润新知