You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu系统中如何解决‘UnsatisfiedLinkError: Can't load library’错误?

解决java.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/jvm/java-17-openjdk-amd64/lib/libawt_xawt.so问题

兄弟你这明显是JDK版本不匹配的坑——你明明装了OpenJDK 11,但系统或程序还在盯着Java 17的AWT库找!别慌,咱们一步步把问题搞定:

第一步:确认系统已安装的JDK版本

先跑个命令看看系统里到底有哪些Java版本:

update-alternatives --list java

你应该能看到/usr/lib/jvm/java-11-openjdk-amd64/bin/java这个路径,要是没有的话,可能之前的OpenJDK 11安装没成功,得重新执行一次sudo apt install openjdk-11-jdk。

第二步:切换默认JDK到11

系统默认可能还在使用Java 17,咱们手动切换过去:

sudo update-alternatives --config java

这时候会弹出一个选项列表,你选对应OpenJDK 11的序号,按回车确认即可。

别忘了解决编译工具的版本匹配问题,不然编译和运行版本不一致也会出岔子:

sudo update-alternatives --config javac

同样选择OpenJDK 11对应的序号。

第三步:配置环境变量确保生效

有些时候系统会读错环境变量,咱们手动设置兜底:

  1. 打开bash配置文件:
nano ~/.bashrc
  1. 在文件末尾添加以下内容:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
  1. 保存退出后,刷新环境变量:
source ~/.bashrc

第四步:验证配置是否成功

跑两个命令确认当前Java版本:

java -version
javac -version

如果输出都是openjdk version "11.x.x"相关内容,说明配置正确,再运行你的程序应该就没问题了。

要是还报错?

那大概率是程序之前用Java 17编译过,或者依赖的库绑定了Java 17:

  • 重新编译代码:用当前的javac(11版本)重新编译所有.java文件
  • 若使用Maven/Gradle等构建工具,记得把sourceCompatibility和targetCompatibility都设置为11

内容的提问来源于stack exchange,提问作者mahomes15

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 23:42:43