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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM