web-dev-qa-db-fra.com

import com.Sun.image.codec.jpeg. *

J'ai un programme Java lorsque je le compile, j'obtiens l'erreur suivante

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

que puis-je faire ?

Quelle est la bonne façon d'écrire un fichier image maintenant que le package com.Sun est obsolète.

34
silverkid

Pourquoi utilisez-vous des classes dans le package com.Sun.image.codec.jpeg? Vous n'êtes pas censé utiliser ces classes directement: Pourquoi les développeurs ne devraient pas écrire de programmes qui appellent des packages 'Sun' .

Que fait votre programme? Essaie-t-il simplement de lire ou d'écrire une image JPG? C'est très simple avec l'API ImageIO. Voir ce tutoriel: Écriture/enregistrement d'une image .

Addition - Le package com.Sun.image.codec.jpeg a été supprimé dans Java 7 comme mentionné dans le Java SE 7 et JDK 7 Compatibility Guide .

Synopsis: Le non standard com.Sun.image.codec.jpeg Le package est retiré

Description: Le com.Sun.image.codec.jpeg le package a été ajouté dans JDK 1.2 (décembre 1998) comme moyen non standard de contrôler le chargement et l'enregistrement des fichiers d'image au format JPEG. Ce package n'a jamais fait partie des spécifications de la plate-forme et il a été supprimé de la version Java SE 7. L'API Java Image I/O Image) a été ajoutée à la Version JDK 1.4 en tant qu'API standard et éliminé le besoin de com.Sun.image.codec.jpeg paquet.

33
Jesper

J'ai eu ce problème lors de la compilation avec JDK 7. Assez étrange, Eclipse n'a pas montré cette erreur, seul javac l'a fait. La réponse peut être trouvée dans cette réponse Stackoverflow : javac utilise une table de symboles spéciale qui n'inclut pas toutes les classes propriétaires de Sun et fournit -XDignore.symbol.file fait disparaître le problème.

Bien sûr, une bien meilleure solution consiste à réécrire le code sans utiliser les classes propriétaires, mais pour prendre en charge JDK 7 rapidement, cette option fonctionne.

52
mainzelM

En général, essayez de ne pas utiliser les classes des packages "Sun. " ou "com.Sun. ", car ces packages sont considérés comme des détails d'implémentation et sont ne fait pas partie de l'API Java.

Ils peuvent poser des problèmes lors du passage à de nouvelles versions de Java car il n'y a pas de garantie de compatibilité descendante. De même, ils peuvent poser des problèmes lors du passage à un autre fournisseur Java , comme OpenJDK.

Ces classes sont presque toujours encapsulées par Java classes API qui doivent être utilisées à la place.

Voir: https://sonarcloud.io/organizations/default/rules?languages=Java&open=squid%3AS1191&q=Sun

2
Diego Turiso

Quel JDK utilisez-vous? Je pense que ce package n'est pas une exigence et ne sera disponible que dans le JDK de Sun. Cette discussion explique.

Vous pourrez peut-être télécharger le fichier jar et l'inclure séparément dans votre fichier de chemin si vous voulez vraiment l'utiliser.

Selon docs :

Notez que les classes du package com.Sun.image.codec.jpeg ne font pas partie des API principales Java. Elles font partie des distributions JDK et JRE de Sun. Bien que d'autres titulaires de licence puissent choisir Pour distribuer ces classes, les développeurs ne peuvent pas dépendre de leur disponibilité dans des implémentations non Sun. Nous prévoyons que des fonctionnalités équivalentes seront éventuellement disponibles dans une API principale ou une extension standard.

1
Vincent Ramdhanie

On dirait que vous utilisez quelque chose qui a été remplacé. Vous êtes peut-être sur Java 7?

Ici est quelque chose qui semble décrire cela, et où aller pour trouver son remplacement approprié.

1
Francis Upton