OpenJDK 8中ImageIO.read错误的解决方法?

cod*_*edd 9 java openjdk image unsatisfiedlinkerror

我正在使用Java 8(特别是OpenJDK 8)进行项目,我需要从JPG文件中读取图像.一开始搜索到了一些类似的问题(例如,将字节数组读入没有ImageIO的缓冲图像,是否有100%的Java替代ImageIO来读取JPEG文件?),但我的问题不同,那里的解决方案不符合我的要求要求.

事实证明,JPEGImageReader班级仍然缺失.(请参阅openjdk-8:libjavajpeg.so中缺少JPEGImageReader函数)虽然该错误报告是针对Debian的,但我使用的是Kubuntu 14.10,它也受到了影响.

根据该报告的最后一条消息,此时似乎没有人正在处理这个问题......

重现此错误的代码段是:

// ...
BufferedImage img = null;
try {
    img = ImageIO.read(new File(filename));
} catch (IOException e) {
    throw new RuntimeException(e);
}
// ...
Run Code Online (Sandbox Code Playgroud)

该文件的路径是有效的,如果我使用Java 1.7,这将正常工作,但更改为1.8会导致以下激活ImageIO.read:

Caught UnsatisfiedLinkError: com.sun.imageio.plugins.jpeg.JPEGImageReader.initReaderIDs(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Class;)
Run Code Online (Sandbox Code Playgroud)

我想帮助解决这个问题,同时避免:

  1. 其他/外部库的附加依赖;
  2. 回到Java 1.7;
  3. 不得不从源头重建;
  4. Oracle专有的JDK实现

工作代码片段表示赞赏.

编辑1:在列表中添加了第4点.

EDIT-2:重新编写主要部分的一部分并添加了另一个参考.

Mah*_*der 3

我相信这个问题现已在 2015 年 3 月 17 日发布时得到修复,根据 Matthias Klose 的电子邮件

来源:openjdk-8 来源版本:8u40-b27-1

我们相信您报告的错误已在最新版本的 openjdk-8 中得到修复,该版本将安装在 Debian FTP 存档中。

附上此版本与上一版本之间的更改摘要。

感谢您报告该错误,该错误现已关闭。如果您有进一步的意见,请将其发送至 760926@bugs.debian.org,维护者将在适当的情况下重新打开错误报告。

Debian 发行版维护软件 pp. Matthias Klose(更新的 openjdk-8 软件包的供应商)

(此消息是根据他们的要求自动生成的;如果您认为有问题,请通过邮件 ftpmaster@ftp-master.debian.org 联系存档管理员)