我在我的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文件。我不知道从哪里获得该文件。
有人可以帮我吗?
答案 0 :(得分:4)
我感到有点内疚,因为它可能更好地服务于ServerFault或其中一个Linux主板上,这个问题已经超过6个月了但是我整天都在撞墙,终于找到了一个解决这个问题,我想其他人可能会从中受益。
系统:Windows 7
和CentOS 6.5
使用:Ghostscript 9.14
一个小故事:
与OP一样,我在Windows上运行ghostscript程序将PDF转换为一系列图像。这工作正常,直到我需要切换到Linux并运行程序,我需要转换的大约5%的PDF提出error cannot decode code stream
。我意识到我在Windows上使用的是较新版本的ghostscript。 (Windows上的9.14与CentOS上的8.70相比,因为通过yum安装)。
我使用yum remove ghostscript
删除了旧版本。接下来,我发现安装最新版Ghostscript的最简单方法是从here下载并编译。由于我使用yum删除了以前版本的ghostscript,因此我必须更新usr/bin
中的链接以指向usr/local/bin/gs
ln -s /usr/local/bin/gs /usr/bin/gs
。一切就绪,我想,我试图运行我的程序,然后bam,错误!
解决问题:
所以现在我收到了错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'gs': libgs.so: cannot open shared object file: No such file or directory
我遇到了一个帖子here,说要获得必要的libgs.so
我需要返回并使用命令make so
将源重建为共享库。我这样做了然后我将libgs.so.9.14
文件放在ghostscript文件夹中的sobin
目录下并将其复制到/usr/lib
。在该目录下,我使用命令libgs.so
建立了ln -s /usr/lib/libgs.so.9.14 /usr/lib/libgs.so
的符号链接。
一旦完成,我需要更新我的ld_library_path
,但发现当我这样做时,更改不是全局的,所以我找到了Unix & Linux post如何设置全局lib路径。基本上这样做,您需要在.conf
中添加/etc/ld.so.conf.d/
文件以及文件路径。我使用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 so
,我按此顺序执行此操作,因此我将保留此内容。
make install
make so
如果您使用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专家,所以我可能会用上面的命令做一些不必要的工作,但我想要彻底。
答案 1 :(得分:2)
我刚在linux VM上遇到过这个问题。我能够通过在系统上安装ghostscript来解决它。我刚刚使用了命令:
sudo yum install ghostscript
希望有所帮助!
答案 2 :(得分:0)
make soinstall
将创建所需的库以及https://www.ghostscript.com/doc/current/Install.htm#Shared_object中所述的可执行文件