2009-12-15 32 views
28

Tengo un programa Java cuando compilarlo me sale el siguiente errorcom.sun.image.codec.jpeg importación. *

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

¿qué puedo hacer?

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

Respuesta

26

¿Por qué usa clases en el paquete com.sun.image.codec.jpeg? Se supone que no debes usar esas clases directamente: Why Developers Should Not Write Programs That Call 'sun' Packages.

¿Qué hace su programa? ¿Simplemente trata de leer o escribir una imagen JPG? Eso es muy fácil con la API ImageIO. Consulte este tutorial: Writing/Saving an Image.

adición - El paquete com.sun.image.codec.jpeg se ha eliminado en Java 7 como se menciona en el Java SE 7 and JDK 7 Compatibility Guide.

Sinopsis: El no estándar com.sun.image.codec.jpeg paquete es retirado

Descripción: El paquete com.sun.image.codec.jpeg se añadió en JDK 1.2 (dic 1998) como una forma no estándar de control de la carga y de ahorro de archivos de imagen 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 Java Image I/O se agregó a la versión JDK 1.4 como una API estándar y eliminó la necesidad del paquete com.sun.image.codec.jpeg.

+0

Sí, desafortunadamente, leer un archivo JPEG con ImageIO es mucho más lento –

+9

ImageIO no funciona con CMYK-JPEG. – AvrDragon

+8

Esta es solo una opción si está compilando su propio código. Esto no siempre es verdad Nadie quiere ir y volver a escribir un programa solo para compilarlo. La respuesta correcta es por @mainzelM (justo debajo al momento de escribir). – mjaggard

1

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

Puede descargar el archivo jar e incluirlo en su archivo de ruta de acceso por separado si realmente desea usarlo.

Según docs:

Tenga en cuenta que las clases del paquete com.sun.image.codec.jpeg no forman parte del núcleo API 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.

1

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

Here es algo que parece describir esto, y dónde encontrarlo es un reemplazo adecuado.

49

Tuve este problema al compilar con JDK 7. Es bastante extraño que Eclipse no haya mostrado este error, solo javac si. La respuesta se puede encontrar en in this Stackoverflow answer: 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.

+6

Con Maven: utilice la versión 3.1 de maven-compiler-plugin y luego -XDignore.symbol.file ATorras

+0

Puede usar ' -XDignore.symbol.file' con el mismo éxito sin tener que actualizar maven-compiler-plugin – Dzmitry

+0

@mainze ¿Cómo agregar esto a través del símbolo del sistema? Necesito aplicarlo para mi aplicación web desplegada en tomcat bajo linux –