在Eclipse中遇到java.lang.UnsatisfiedLinkError该如何解决?
你的程序打包成可执行JAR能在Win10正常运行,但Eclipse里跑不了,核心原因是Eclipse运行环境下GDAL本地库的依赖或加载路径配置不对。先把报错信息翻译过来:
本地库加载失败。
java.lang.UnsatisfiedLinkError: C:\openJDK\jdk-19.0.1\bin\gdalalljni.dll: 找不到指定的过程
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: 'int org.gdal.gdal.gdalJNI.HasThreadSupport()'
at org.gdal.gdal.gdalJNI.HasThreadSupport(Native Method)
at org.geotools.jdbcconnection.MainDialog.(MainDialog.java:371)
下面是具体的排查和修复步骤:
1. 补全GDAL本地库的依赖文件
gdalalljni.dll不能单独运行,它需要GDAL的其他核心.dll文件(比如gdal3xx.dll、proj_x_x.dll这类)配合。你要确认所有GDAL相关的.dll文件都放在同一个目录里,要么是C:\openJDK\jdk-19.0.1\bin\,要么是单独的GDAL库目录,别漏了任何依赖。
2. 配置Eclipse的本地库路径
- 右键项目 → Build Path → Configure Build Path
- 切到Libraries标签,找到GDAL的Java绑定JAR(比如
gdal.jar),展开后点Native library location,再点Edit - 选择GDAL所有.dll文件所在的目录(比如
C:\GDAL\bin),别再用JDK的bin目录了,除非你已经把所有GDAL依赖库都复制过去
3. 核对JDK与GDAL的版本兼容性
你用的是OpenJDK 19,得确认你用的GDAL版本支持Java 19。不少旧版GDAL的Java绑定只兼容到Java 11或17,版本不匹配会导致JNI方法签名对不上,就会出现找不到方法的错误。要么换OpenJDK 17这种GDAL支持的版本,要么下载适配Java 19的GDAL版本。
4. 设置Eclipse运行的VM参数
- 右键项目 → Run As → Run Configurations
- 在Arguments标签的VM arguments里加一行:
把路径换成你实际存放GDAL.dll的目录-Djava.library.path=C:\GDAL\bin - 另外,确保系统的PATH环境变量里也包含GDAL的bin目录,这样Eclipse运行时能找到依赖库
5. 清理重建项目
- 点Eclipse顶部的Project → Clean,选你的项目清理
- 再点Project → Build Project,确保配置和编译都生效
内容的提问来源于stack exchange,提问作者Paul

