Подтвердить что ты не робот

Import com.sun.image.codec.jpeg. *

У меня есть Java-программа при компиляции я получаю следующую ошибку

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

что я могу сделать?

Каков правильный способ записи файла изображения, когда пакет com.sun устарел.

4b9b3361

Ответ 1

Почему вы используете классы в пакете com.sun.image.codec.jpeg? Вы не должны напрямую использовать эти классы: Почему разработчикам не нужно писать программы, которые называют "sun" Packages.

Что делает ваша программа? Он просто пытается читать или писать JPG-изображение? Это очень просто с API ImageIO. См. Этот учебник: Запись/сохранение изображения.

Дополнение. Пакет com.sun.image.codec.jpeg был удален в Java 7, как указано в Руководстве по совместимости Java SE 7 и JDK 7.

Сводка: Нестандартный пакет com.sun.image.codec.jpeg вышел на пенсию

Описание: Пакет com.sun.image.codec.jpeg был добавлен в JDK 1.2 (декабрь 1998) как нестандартный способ управления загрузкой и сохранением файлов изображений в формате JPEG. Этот пакет никогда не был частью спецификации платформы и был удален из выпуска Java SE 7. API Java Image I/O был добавлен в версию JDK 1.4 в качестве стандартного API и устранял необходимость в пакете com.sun.image.codec.jpeg.

Ответ 2

У меня была эта проблема при компиляции с JDK 7. Достаточно странно Eclipse не показывал эту ошибку, только javac. Ответ можно найти fooobar.com/questions/123961/...: javac использует специальную таблицу символов, которая не включает все принадлежащие Sun классы, а запрос -XDignore.symbol.file заставляет проблему уйти.

Конечно, гораздо лучшим решением является переписать код без использования собственных классов, но для быстрой поддержки JDK 7 эта опция работает.

Ответ 3

Какой JDK вы используете? Я думаю, что этот пакет не является обязательным требованием и будет доступен только в Sun JDK. Это обсуждение объясняет.

Возможно, вы сможете загрузить файл jar и включить его в свой файл пути отдельно, если вы действительно хотите его использовать.

Согласно docs:

Обратите внимание, что классы в пакете com.sun.image.codec.jpeg не являются частью основных API Java. Они являются частью распределений Sun JDK и JRE. Хотя другие лицензиаты могут выбирать для распространения этих классов, разработчики не могут зависеть от их доступности в реализациях, отличных от Sun. Мы ожидаем, что эквивалентная функциональность в конечном итоге будет доступна в базовом API или стандартном расширении.

Ответ 4

Похоже, вы используете что-то, что было заменено. Может быть, вы на Java 7?

Здесь это то, что, кажется, описывает это, и где искать подходящую замену.

Ответ 5

В общем, старайтесь не использовать классы от "солнца". или "com.sun." пакеты, так как эти пакеты считаются деталями реализации и не являются частью Java API.

Они могут вызвать проблемы при переходе на новые версии Java, поскольку нет гарантии обратной совместимости. Точно так же они могут вызвать проблемы при переходе на другого поставщика Java, такого как OpenJDK.

Такие классы почти всегда заключаются в классы Java API, которые следует использовать вместо них.

См.: https://sonarcloud.io/organizations/default/rules?languages=java&open=squid%3AS1191&q=sun.