windows上java调用gdal.jar报错

这篇博客介绍了在Windows上使用Java调用GDAL库时遇到的 UnsatisfiedLinkError 错误,以及四种可能的解决方案。包括修改环境变量PATH,将DLL复制到JDK的jre/bin目录,复制到system32目录,以及通过代码设置java.library.path。这些方法旨在确保GDAL的DLL和JNIDLL能够被Java正确加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

windows上java调用gdal.jar报错

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都在如下目录:
d:/release-1900-x64-gdal-3-1-2-mapserver-7-6-1/bin
GDAL需要的JNI DLL在如下目录:
d:/release-1900-x64-gdal-3-1-2-mapserver-7-6-1/bin/gdal/java

方法一,

在【我的电脑】,【环境变量】,【path】增加dll相关路径。

方法二,

把以上目录下dll复制到使用的JDK版本%JAVA_HOME%/jre/bin/目录下;

方法三,

把以上目录下dll复制到system32目录下

方法四,

在代码中设置:java.library.path

System.out.println( System.getProperty("java.library.path"));
System.setProperty("java.library.path", System.getProperty("java.library.path")+";d:xxxx");
package org.example; import org.gdal.gdal.Dataset; import org.gdal.gdal.gdal; import org.gdal.gdal.Band; import org.gdal.osr.osr; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { gdal.AllRegister(); //输入的TIFF影像文件路径 String folderPath = "C:\\Users\\Administrator.HZ-202406282022\\Desktop\\gee影像下载\\江西农田\\test"; String outPath = "C:\\Users\\Administrator.HZ-202406282022\\Desktop\\gee影像下载\\江西农田\\test\\result\\"; String projPath = "F:\\土壤所\\代码修改\\gdal\\bin\\proj9\\share"; gdal.SetConfigOption("PROJ_LIB", projPath); String[] inputFilePath = getTiffFileNames(folderPath); if (inputFilePath != null) { System.out.println("找到的TIFF文件:"); for (String fileName : inputFilePath) { System.out.println(fileName); } } else { System.out.println("未找到TIFF文件。"); } for(int i = 0; i < inputFilePath.length; i++) { String[] partsnumber = inputFilePath[i].split("_"); if(partsnumber.length != 5) { Dataset dataset = gdal.Open(folderPath+"\\"+inputFilePath[i], 0); gdal.Translate(outPath+inputFilePath[i], dataset,null); } else{ int[] numbers = extractNumbers(inputFilePath[i]); System.out.println("numbers:"+numbers); String ndviName = extractPrefix(inputFilePath[i]); System.out.println("ndviName:"+ndviName); // 打开输入影像 Dataset inputDataset = gdal.Open(folderPath+"\\"+inputFilePath[i], 0); if (inputDataset == null) { System.err.println("无法打开影像文件: " + inputFilePath); ret
03-31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值