一、 Windows部署GDAL
二论皆、 JAVA開發(fā)環(huán)境整合GDAL
三益楼、 部署Java集成gdal項目
四、 Linux系統(tǒng)編譯点晴、發(fā)布gdal項目
1感凤、參照CentOS7 Linux(CentOS)編譯安裝Postgresql 12.2+Postgis-3.0.1一文,按照以下兩節(jié)安裝
三粒督、編譯GDAL依賴
四陪竿、編譯GDAL 3.0.4
2、編譯生成gdal.jar
2.1 配置java.opt
修改文件:/usr/local/src/gdal-3.0.4/swig/java/java.opt屠橄,修改JAVA_HOME的值為java的根目錄
JAVA_HOME = /usr/java/jdk1.8.0_221
2.2 編譯
cd /usr/local/src/gdal-3.0.4/swig/java
make && make install
3族跛、JavaWeb應(yīng)用的 gdal環(huán)境配置
1、整理文件锐墙,把生成的文件放置到gdal/java目錄
mkdir -p /usr/local/pgsql/plugin/gdal/java
cp /usr/local/src/gdal-3.0.4/swig/java/gdal.jar /usr/local/pgsql/plugin/gdal/java
cp /usr/local/src/gdal-3.0.4/swig/java/.libs/*.so /usr/local/pgsql/plugin/gdal/java
2礁哄、在centos下, java.library.path=/usr/java/packages/lib/amd64,放置libgdalalljni.so到此目錄溪北,javaWeb項目從這里加載libgdalalljni.so動態(tài)庫
cp /usr/local/src/gdal-3.0.4/swig/java/.libs/*.so /usr/java/packages/lib/amd64
3桐绒、把/swig/java中生成的gdal.jar文件復(fù)制到j(luò)re/lib/ext夺脾,jvm啟動加載
cp /usr/local/src/gdal-3.0.4/swig/java/gdal.jar /usr/java/jdk1.8.0_221/jre/lib/ext
vi /etc/profile
CLASS_PATH=$JAVA_HOME/jre/lib/ext/gdal.jar:$CLASS_PATH
source /etc/profile
4、在/usr/local/gdal-3.0.4/swig/java/目錄下復(fù)制gdal.jar茉继、libgdalalljni.so文件到項目resources/gdal/linux
image.png
5劳翰、啟動JavaWeb看看吧
載入動態(tài)庫libgdalalljni.so
http://192.168..128:8080/api/gdal/load注冊gdal驅(qū)動
http://192.168..128:8080/api/gdal/register測試gdal
http://192.168..128:8080/api/gdal/test
可能出現(xiàn)的問題
錯誤1: java.lang.UnsatisfiedLinkError: Native Library /usr/java/packages/lib/amd64/libgdalalljni.so already loaded in another classloader
jvm啟動時已經(jīng)加載過libgdalalljni.so,不能能再次加載了馒疹,在linux系統(tǒng)上無需代碼加載libgdalalljni.so
錯誤2:libpq.so.5: cannot open shared object file: No such file or directory 原因是未設(shè)置pg庫到系統(tǒng)動態(tài)庫配置請設(shè)置ld.so.conf
echo '/usr/local/pgsql/lib' >> /etc/ld.so.conf
ldconfig
錯誤3:nested exception is java.lang.UnsatisfiedLinkError: org.gdal.ogr.ogrJNI.RegisterAll()V
gdal.jar未放置到/usr/java/jdk1.8.0_221/jre/lib/ext
vi /etc/profile
CLASS_PATH=$JAVA_HOME/jre/lib/ext/gdal.jar:$CLASS_PATH
source /etc/profile