java.lang.UnsatisfiedLinkError: /home/xxx/jcef_build/libjcef.so: libjawt.so: 无法打开共享对象文件: 没有那个文件或目录

 背景:

在Linux 想运行内嵌了cef 的一个 distribution 程序,在启动后报错如下:

java.lang.UnsatisfiedLinkError: /home/xxx/jcef_build/libjcef.so: libjawt.so: 无法打开共享对象文件: 没有那个文件或目录

之前在interllij可以正常运行,但是发布成单独的可运行程序后就跑不起来,看了自动生成的启动脚本没有问题。

java.lang.UnsatisfiedLinkError: /home/xxx/jcef_build/libjcef.so: libjawt.so: 无法打开共享对象文件: 没有那个文件或目录_第1张图片


解决思路:

1、执行locate (用于查找符合条件的文档)命令: locate libjawt.so

       发现系统下有下面三个地方存在这个文档

 2、给系统添加 指定到一个libjawt.so 的路劲到 LD_LIBRARY_PATH

     LD_LIBRARY_PATH 是Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。

方法一(当前终端有效,最好用第二种)

    在终端执行命令:export LD_LIBRARY_PATH=/home/xxxx/xxx/00_soft/jdk/jdk1.8/jre/lib/amd64/

方法二(长久有效)

   执行如下命令:cd ~; vi .bashrc

   在打开的文件最后添加上下面的配置(注意:具体的扩展路劲需修改为你本地找到的 libjawt.so 路劲):

   export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/xxxx/xxx/00_soft/jdk/jdk1.8/jre/lib/amd64/

  保存退出

  执行命令:source .bashrc   或是重启使其生效

再次启动程序就可以正常找到该文件,并且顺利运行。


问题小思:

问题解决后,对比了build配置的参数 和 run/debug configuration 窗口的参数, 分别如下

build.gradle

 run/debug configuration

java.lang.UnsatisfiedLinkError: /home/xxx/jcef_build/libjcef.so: libjawt.so: 无法打开共享对象文件: 没有那个文件或目录_第2张图片

 

 在run/debug configuration 中的环境变量有指定 LD_LIBRARY_PATH 这个参数,但是在启动脚本中并没没有对这个参数进行配置处理,所有出现了找不到 amd64 文件夹下面的 so 文件的情况,自己对其进行配置修即可解决这个问题。

你可能感兴趣的:(java.lang.UnsatisfiedLinkError: /home/xxx/jcef_build/libjcef.so: libjawt.so: 无法打开共享对象文件: 没有那个文件或目录)