import com.sun.image.codec.jpeg.*

sil*_*kid 34 java image-processing

我编译它时有一个Java程序我得到以下错误

[javac] ...\MyClass.java:33: package com.sun.image.codec.jpeg does not exist
[javac] import com.sun.image.codec.jpeg.*;
[javac] ^
Run Code Online (Sandbox Code Playgroud)

我能做什么 ?

现在不推荐使用com.sun软件包,编写映像文件的正确方法是什么.

小智 52

我在使用JDK 7编译时遇到了这个问题.奇怪的Eclipse没有显示这个错误,只有javac做了.答案可以在Stackoverflow的答案中找到:javac使用一个不包含所有Sun专有类的特殊符号表,并且提供-XDignore.symbol.file使问题消失.

当然,更好的解决方案是在不使用专有类的情况下重写代码,但为了快速支持JDK 7,此选项可行.

  • 使用Maven:使用maven-compiler-plugin 3.1版,然后<compilerArgs> <arg> -XDignore.symbol.file </ arg> </ compilerArgs> (7认同)

Jes*_*per 33

你为什么要在包中使用类com.sun.image.codec.jpeg?您不应该直接使用这些类:为什么开发人员不应该编写调用'sun'包的程序.

你的课程做什么?它只是尝试读取或写入JPG图像吗?使用ImageIOAPI 非常容易.请参阅本教程:编写/保存图像.

添加 - com.sun.image.codec.jpegJava 7中删除了包,如Java SE 7和JDK 7兼容性指南中所述.

概要:非标准com.sun.image.codec.jpeg包已退役

描述:com.sun.image.codec.jpeg软件包是在JDK 1.2(1998年12月)中添加的,作为控制JPEG格式图像文件加载和保存的非标准方法.该软件包从未成为平台规范的一部分,并且已从Java SE 7版本中删除.Java Image I/O API作为标准API添加到JDK 1.4版本中,无需使用该com.sun.image.codec.jpeg软件包.

  • 如果您正在编译自己的代码,这只是一个选项.这并非总是如此.没有人想去重新编写程序只是为了编译它.正确答案是@mainzelM(在撰写本文时正好在下面). (8认同)
  • 是的,但是*我*不是.我正在编译一些软件.我不会重写它. (4认同)
  • @danidemi不,`sun.*`和`com.sun.*`包都是JDK内部的一部分,不能使用.您应该只使用[Java API文档](http://docs.oracle.com/javase/8/docs/api/)中记录的内容.请注意,链接文档提到您应该只使用文档化的`java.*`,`javax.*`和`org.*`包. (2认同)