我正在尝试将一个项目从JDK8迁移到JDK11,问题是大多数东西不再是JDK11的一部分,因为它们曾经是JDK8的一部分。由于从JDK11中删除了一些包,我不得不手动添加一些单独的jars,但仍然存在一个问题。导入的% 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上一样编译,但它一直弹出一个错误"package com.sun.imageio.jpeg is not visible (package com.sun.imageio.plugins.jpeg是在模块java.desktop中声明的,它不会导出它)“
发布于 2019-09-17 20:57:13
看起来您甚至不需要这个类,至少从您显示的代码来看是这样。
您可以使用任何Class对象来代替JPEGImageReader.class.getResourceAsStream(..,只要它位于合适的类加载上下文中。Class类中存在getResourceAsStream方法。
用getClass().getResourceAsStream(..替换它,这部分代码就可以正常工作了。
https://stackoverflow.com/questions/57974306
复制相似问题