使用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等。

3. 配置环境变量

vi /etc/profile
添加export PROJ_LIB=/usr/local/gis/proj72/share/proj
posted @ 2022-04-09 10:59  mangata  阅读(976)  评论(0编辑  收藏  举报