com.sun.imageio.plugins.jpeg.JPEGImageReader 不再是 JDK-11 的一部分

com.sun.imageio.plugins.jpeg.JPEGImageReader no longer part of JDK-11

我正在尝试将一个项目从 JDK8 迁移到 JDK11,问题是大部分内容不再像以前在 JDK8 中那样属于 JDK11。 由于从 JDK11 中删除了这些包,我不得不手动添加一些单独的 jar,但仍然存在一个问题。 导入com.sun.imageio.plugins.jpeg.JPEGImageReader;不再是 JDK11 的一部分,我无法找到合适的替代品或依赖项来提供给我的代码,以便它可以像以前一样工作。

我访问过文档 https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/imageio/package-summary.html 但它们似乎不是合适的替代品

InputStream iccProfileStream = JPEGImageReader.class.getResourceAsStream("/ISOcoated_v2_300_eci.icc");

//JPEGImageReader 由于缺少从 JDK11 中删除的 jar 而完全变红

cmykProfile = ICC_Profile.getInstance(iccProfileStream);
iccProfileStream.close();

代码应该像以前在 JDK8 上那样编译,但相反,它不断弹出错误 "package com.sun.imageio.jpeg is not visible (package com.sun.imageio.plugins.jpeg is declared in module java.desktop, which does not export it )"

您似乎甚至不需要 class,至少根据您显示的代码是这样。

您可以使用任何 Class 对象来代替 JPEGImageReader.class.getResourceAsStream(..,只要它处于合适的 class 加载上下文中即可。 getResourceAsStream 方法存在于 Class class.

将其替换为 getClass().getResourceAsStream(..,该部分代码将正常工作。