在使用make px4_sitl jmavsim
命令进行仿真时出现错误。
java.lang.UnsatisfiedLinkError: Can't load library /usr/lib/jvm/java-11-openjdk-amd64/lib/libawt_xawt.so
java.lang.UnsatisfiedLinkError: /tmp/jogamp_0000/file_cache/jln10188095814152762077/jln17241601840665512207/libnativewindow_awt.so: libjawt.so: cannot open shared object file: No such file or directory
Inconsistency detected by ld.so: dl-lookup.c: 111: check_match: Assertion `version->filename == NULL || ! _dl_name_match_p (version->filename, map)' failed!
说一下原因,是因为要安装的一个java开发工具包,官方安装的版本为jdk11,一定要使用jdk8版本,10、11、13版本都会报错。
使用命令安装openjdk-8-jdk软件包。
sudo apt install openjdk-8-jdk
安装完成之后需要用命令切换jdk软件包版本。
sudo update-alternatives --config java
输入java-8-openjdk-amd64对应的数字后按回车键即可切换版本。
使用以下命令查看jdk版本。
java -version
之后再次运行仿真命令,如果出现如下错误。
has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version (..)up to 52.0
则需要删除一个文件。
sudo rm -rf Tools/jMAVSim/out
之后再次运行仿真命令即可。
这里记录一下最初遇到的错误和解决方法。
第一次运行时报错。
java.lang.UnsatisfiedLinkError: Can't load library /usr/lib/jvm/java-11-openjdk-amd64/lib/libawt_xawt.so
解决方法是在网上下载libawt_xawt.so文件并添加到/usr/lib/jvm/java-11-openjdk-amd64/lib文件夹中。
第二次运行时报错。
java.lang.UnsatisfiedLinkError: /tmp/jogamp_0000/file_cache/jln10188095814152762077/jln17241601840665512207/libnativewindow_awt.so: libjawt.so: cannot open shared object file: No such file or directory
解决方法是在网上下载libjawt.so文件并添加到/usr/lib/jvm/java-11-openjdk-amd64/lib文件夹中。
解决完这两个问题之后再次运行还是报错。
Inconsistency detected by ld.so: dl-lookup.c: 111: check_match: Assertion `version-filename == NULL || ! _dl_name_match_p (version->filename, map)' failed!
查询原因就是java开发工具包jdk的版本问题。