我在使用 JavaFX 时遇到问题,我已将其发布在堆栈溢出。基本上,Java 库调用需要 JPEG 库版本 90 的本机函数。这是错误消息:
java.io.IOException: Wrong JPEG library version: library is 62, caller expects 90
我认为奇怪的是,即使是我尝试使用的较旧版本的 Java 库 (JavaFX 11) 也需要我的系统上可用的较新版本的 JPEG 库。我使用的是 Fedora 33,这是一个非常最新的操作系统,并且我始终保持其更新。
显然,该库在 Fedora 34 上已更新,但为什么我的 JPEG 在像 Fedora 33 这样的尖端系统中如此过时?另外,升级这个库的规范方法是什么?我应该手动编译并替换它吗?我不确定应该更新哪个库。
该命令ldconfig -p | grep -P jpe?g
返回:
libmjpegutils-2.1.so.0 (libc6,x86-64) => /lib64/libmjpegutils-2.1.so.0
libjpeg.so.62 (libc6,x86-64) => /lib64/libjpeg.so.62
libjpeg.so.62 (libc6) => /lib/libjpeg.so.62
libjpeg.so (libc6,x86-64) => /lib64/libjpeg.so
libgdcmjpeg16.so.3.0 (libc6,x86-64) => /lib64/libgdcmjpeg16.so.3.0
libgdcmjpeg12.so.3.0 (libc6,x86-64) => /lib64/libgdcmjpeg12.so.3.0
libgdcmjpeg8.so.3.0 (libc6,x86-64) => /lib64/libgdcmjpeg8.so.3.0
命令rpm -qa | grep -P jpe?g
返回:
libjpeg-turbo-2.0.5-5.fc33.i686
libjpeg-turbo-2.0.5-5.fc33.x86_64
libjpeg-turbo-devel-2.0.5-5.fc33.x86_64
mjpegtools-libs-2.1.0-20.fc33.x86_64
openjpeg2-2.3.1-10.fc33.x86_64
我应该更新 openjpeg 或 libjpeg-turbo 吗?
答案1
- 获取 Fedora 的 34 RPM( libjpeg-turbo-2.0.90-2.fc34.x86_64.rpm 或 libjpeg-turbo-2.0.90-2.fc34.i686.rpm )并在您想要的任何位置解压 JPEG 库,或者编译并安装库到例如 /usr/local
- 这样运行这个应用程序:
$ LD_PRELOAD=/path/libjpeg.so.62 application