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

标签 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.lang.桌面,不导出它)”

最佳答案

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

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

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

关于java - com.sun.imageio.plugins.jpeg.JPEGImageReader 不再是 JDK-11 的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57974306/

相关文章:

java - @CustomFormAuthenticationMechanismDefinition 注释缺失

java - 强制 jboss 6 在部署后拾取 jar

java - Heroku 继续使用 Postgres 而不是 MySQL

Java Socket 不返回流中的任何内容

java - 我如何处理JPA注释@ManytoMany

java - 使用 HTTP Java 客户端执行异步请求时如何处理错误?

java - 在 Java11 模块中使用 @PostConstruct 或 @PreDestroy

java - 处理 3 中的非法反射访问错误 (JDK11)

java - 安装Eclipse时出错

java - (Arquillian REST 扩展)为什么 webtarget 在测试方法中为空?