軟件版本:gdal-3.20、jdk-1.80
一、開發環境搭建流程
- 首先從官網下載編譯好的二進制包 GISInternals Support Site,名稱release-1911-x64-gdal-3-2-0-mapserver-7-6-1.zip。

下載完成后的文件如下:

文件解壓后如下:

- 將gdal的bin目錄下所有dll拷貝到jdk\bin目錄下(或\jdk\jre\bin,根據自己情況選擇),如圖所示:

- 在IDEA中創建一個JAVA項目,在項目根目錄創建lib目錄,將3個必要的文件拷貝到lib中(
\bin\gdal302.dll、bin\gdal\java\gdalalljni.dll、bin\gdal\java\gdal.jar)。

- 在項目中引用gdal的庫。文件-項目結構-項目設置-庫-添加-
gdal.jar。

- 開始編碼。在項目的java文件夾中創建一個類,編寫如下代碼:
import org.gdal.gdal.gdal;
import org.gdal.ogr.ogr;
public class HelloGdal {
public static void printVectorDrivers(){
ogr.RegisterAll();
int count =ogr.GetDriverCount();
System.out.println(count);
for(int i=0; i<count; i++){
System.out.println(ogr.GetDriver(i).GetName());
}
gdal.GDALDestroyDriverManager();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
printVectorDrivers();
}
}
運行結果如下:

二、問題總結
- 引用庫報錯
Native library load failed.
java.lang.UnsatisfiedLinkError: no gdalalljni in java.library.path
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.gdal.gdal.gdalJNI.AllRegister()V
這個問題是gdal的dll文件拷貝位置不正確,導致java程序不能找到相應的dll引用。將dll拷貝到jdk\bin或jdk\jre\bin,這里自己多嘗試幾次。
- 找不到proj.db
在系統環境變量中配置,PROJ_LIB:C:\Program Files\GDAL\projlib\proj.db

如果沒有該文件,下載gdal core進行安裝。
