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

时间:2019-09-17 12:32:45

标签: java java-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");

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

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

代码应像以前在JDK8上一样进行编译,但相反,它始终弹出错误消息“包com.sun.imageio.jpeg包不可见(包com.sun.imageio.plugins.jpeg包在模块java中声明。桌面,而不导出它)”

1 个答案:

答案 0 :(得分:1)

至少基于显示的代码,您似乎甚至不需要该类。

只要任何JPEGImageReader.class.getResourceAsStream(..对象都在适当的类加载上下文中,就可以使用它来代替ClassgetResourceAsStream类中存在Class方法。

getClass().getResourceAsStream(..替换它,那部分代码就可以了。