我有一个Java程序,当我编译它时,我得到以下错误
[javac] ...\MyClass.java:33: package com.sun.image.codec.jpeg does not exist
[javac] import com.sun.image.codec.jpeg.*;
[javac] ^我能做些什么?
既然com.sun包已被弃用,那么编写图像文件的正确方式是什么?
发布于 2009-12-15 20:20:32
为什么要使用com.sun.image.codec.jpeg包中的类?您不应该直接使用这些类:Why Developers Should Not Write Programs That Call 'sun' Packages。
你的程序是做什么的?它只是尝试读取或写入JPG图像吗?有了ImageIO应用编程接口,这就非常简单了。请参阅本教程:Writing/Saving an Image。
此外- Java SE 7 and JDK 7 Compatibility Guide中提到的com.sun.image.codec.jpeg包在Java7中已被删除。
简介:非标准
com.sun.image.codec.jpeg包已停用
JPEG1.2(1998年12月)中添加了JPEG包,作为控制Description:格式图像文件加载和保存的非标准方法。这个包从来都不是平台规范的一部分,并且已经从Java SE 7版本中删除了。Java Image I/O作为标准API添加到JDK1.4发行版中,消除了对com.sun.image.codec.jpeg包的需要。
发布于 2012-10-26 14:47:54
我在使用JDK 7编译时遇到了这个问题,奇怪的是Eclipse没有显示这个错误,只有javac显示了这个错误。答案可以在javac中找到:in this Stackoverflow answer使用了一个特殊的符号表,该符号表并不包含所有Sun专有的类,而提供-XDignore.symbol.file可以解决这个问题。
当然,更好的解决方案是在不使用专有类的情况下重写代码,但是为了快速支持JDK 7,这个选项是有效的。
发布于 2019-07-02 20:22:00
一般来说,尽量不要使用“sun”中的类。或者“com.sun”包,因为此包被视为实现细节,而不是Java API的一部分。
当迁移到Java的新版本时,它们可能会导致问题,因为没有向后兼容性保证。类似地,当迁移到不同的Java供应商时,它们也会带来问题,比如OpenJDK。
这样的类几乎总是由应该使用的Java API类包装。
请参阅:https://sonarcloud.io/organizations/default/rules?languages=java&open=squid%3AS1191&q=sun
https://stackoverflow.com/questions/1906673
复制相似问题