java – 无法加载库’gs’:libgs.so:无法打开共享对象文件:没有这样的文件或目录
作者:互联网
我在我的64位linux机器上安装了64位的ghostscript.我使用ghost4j-0.5.0.jar将pdf文件转换为tiff文件.我编写了一个java程序,它将pdf文件转换为tiff文件.这在Windows上运行得很好但是当我想把它移到linux机器时我得到了以下错误.
“线程中的异常”主“java.lang.UnsatisfiedLinkError:无法加载库’gs’:libgs.so:无法打开共享对象文件:没有这样的文件或目录”
我检查了lib文件夹,但在lib文件夹中找不到libgs.so文件.我不知道从哪里获得该文件.
有人可以帮我这个吗?
解决方法:
我觉得这里有点内疚,因为它可能更好地服务于ServerFault或其中一个Linux主板,这个问题已经超过6个月了但是我整天都在撞墙,终于找到了解决方案.问题,我认为其他人可能会从中受益.
系统:Windows 7和CentOS 6.5
使用:Ghostscript 9.14
一个小背景故事:
和OP一样,我在Windows上运行了一个ghostscript程序,将PDF转换为一系列图像.这工作正常,直到我需要切换到Linux并运行程序和我需要转换的大约5%的PDF出现错误无法解码代码流.我意识到我在Windows上使用的是较新版本的ghostscript. (Windows上的9.14与CentOS上的8.70相比,因为通过yum安装).
我用yum删除了ghostscript删除了旧版本.接下来,我发现安装最新版Ghostscript的最简单方法是从here下载并编译.由于我用yum删除了以前版本的ghostscript,我不得不更新usr / bin中的链接以指向带有ln -s /usr/local/bin / gs /usr/bin/gs的usr / local / bin / gs.一切都到位,所以我想,我试图运行我的程序然后bam,错误!
解决问题:
所以现在我收到了错误:
线程“main”中的异常java.lang.UnsatisfiedLinkError:无法加载库’gs’:libgs.so:无法打开共享对象文件:没有这样的文件或目录
我遇到了一个here的帖子,据说要获得必要的libgs.so我需要返回并使用命令make来重建源作为共享库.我这样做了然后我把ghostgscript文件夹中sobin目录下的libgs.so.9.14文件复制到了/usr/lib.在该目录下,我使用命令ln -s /usr/lib/libgs.so.9.14 /usr/lib/libgs.so创建了一个指向libgs.so的符号链接.
一旦完成,我需要更新我的ld_library_path,但发现当我这样做时,更改不是全局的,所以我找到了关于如何设置全局lib路径的Unix & Linux post.基本上这样做你需要在/etc/ld.so.conf.d/中添加一个带有文件路径的.conf文件.我使用vi /etc/ld.so.conf.d/libgs.conf并将/usr/lib/libgs.so添加到该文件中.最后我运行ldconfig以保存更改.
TLDR:
> Download源自Ghostscript的最新版本:wget http://downloads.ghostscript.com/public/ghostscript-9.14.tar.gz
>解压tar:tar -xzf ghostscript-9.14.tar.gz
> cd ghostscript-9.14
> ./configure
> make< - 你可以跳过去去做,我按照这个顺序做了,所以我会这样离开.
> make install
>这样做
>如果您使用yum ln -s /usr/local/bin / gs /usr/bin/gs删除了以前的版本
> cp ghostscript-9.14 / sobin / libgs.so.9.14 /usr/lib
> ln -s /usr/lib/libgs.so.9.14 /usr/lib/libgs.so
> vi /etc/ld.so.conf.d/libgs.conf
>在新的libgs.conf文件中:/usr/lib/libgs.so并使用esc,:,wq保存.
> ldconfig并完成了.
>运行转换程序.
希望这有助于并且不会太混乱.我不是一个Linux专家(还),所以我可能会用上面的命令做一些不必要的工作,但我想要彻底.
标签:java,imagemagick,ghostscript,ghost4j 来源: https://codeday.me/bug/20191007/1864059.html