library images example java image-processing

java - images - import com.sun.image.codec.jpeg.*



pixel java (4)

Tengo un programa Java cuando lo compilo obtengo el siguiente error

[javac] .../MyClass.java:33: package com.sun.image.codec.jpeg does not exist [javac] import com.sun.image.codec.jpeg.*; [javac] ^

que puedo hacer ?

¿Cuál es la forma correcta de escribir un archivo de imagen ahora que el paquete com.sun está en desuso?


¿Por qué estás usando clases en el paquete com.sun.image.codec.jpeg ? Se supone que no debes usar esas clases directamente: por qué los desarrolladores no deben escribir programas que llamen paquetes ''sun'' .

¿Qué hace tu programa? ¿Simplemente trata de leer o escribir una imagen JPG? Eso es muy fácil con la API de ImageIO . Vea este tutorial: Escribir / Guardar una imagen .

Adición : el paquete com.sun.image.codec.jpeg se ha eliminado en Java 7 como se menciona en la Guía de compatibilidad de Java SE 7 y JDK 7 .

Sinopsis: el paquete com.sun.image.codec.jpeg no estándar se ha retirado

Descripción: el paquete com.sun.image.codec.jpeg se agregó en JDK 1.2 (diciembre de 1998) como una forma no estándar de controlar la carga y el almacenamiento de archivos de imágenes en formato JPEG. Este paquete nunca formó parte de la especificación de la plataforma y se eliminó de la versión Java SE 7. La API de E / S de Java Image se agregó a la versión de JDK 1.4 como API estándar y eliminó la necesidad del paquete com.sun.image.codec.jpeg .


¿Qué JDK estás usando? Creo que este paquete no es un requisito y solo estará disponible en Sun''s JDK. Esta discusión explica.

Sin embargo, es posible que pueda descargar el archivo jar e incluirlo en su archivo de ruta de acceso si realmente desea usarlo.

De acuerdo con los docs :

Tenga en cuenta que las clases del paquete com.sun.image.codec.jpeg no forman parte de las API principales de Java. Son parte de las distribuciones JDK y JRE de Sun. Aunque otros licenciatarios pueden optar por distribuir estas clases, los desarrolladores no pueden depender de su disponibilidad en implementaciones que no sean de Sun. Esperamos que la funcionalidad equivalente finalmente esté disponible en una API central o extensión estándar.


Parece que estás usando algo que ha sido reemplazado. ¿Tal vez estás en Java 7?

Aquí hay algo que parece describir esto, y dónde encontrarlo para reemplazarlo.


Tuve este problema al compilar con JDK 7. Por extraño que parezca, Eclipse no mostró este error, solo javac lo hizo. La respuesta se puede encontrar en esta respuesta : javac usa una tabla de símbolos especial que no incluye todas las clases propietarias de Sun, y suplir -XDignore.symbol.file hace que el problema desaparezca.

Por supuesto, una solución mucho mejor es reescribir el código sin utilizar las clases propietarias, pero para admitir JDK 7 rápidamente, esta opción funciona.