Обновление до Java 11 с Java 8 - пакет sun.util не существует

Я пытаюсь перенести приложение с Java 8 на Java 11. Когда я пытаюсь собрать проект в IntelliJ, я получаю ошибку package sun.util does not exist?

Есть идеи о том, что случилось?

Спасибо!

Oracle купили солнце в 2010 г.!

Elliott Frisch 17.10.2018 06:04

В зависимости от sun. * Классы всегда опасны и хрупки, так как они могут измениться или быть удалены в любой момент. javac выдавал предупреждение об этом во многих выпусках. Какой класс sun.util. * Вы используете? Просто интересно, есть ли стандартный API, который вы могли бы использовать вместо этого.

Alan Bateman 17.10.2018 08:25

Я использовал ResourceBundleEnumeration для реализации нашего собственного ResourceBundle. Но я разработал способ сделать это с помощью new Vector<>(keySet).elements(), который, кажется, работает.

pez 17.10.2018 17:48
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
3
12 041
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пакеты com.sun.* и sun.* содержат внутреннее содержимое и не должны использоваться сторонними приложениями (например, ваше, вероятно) в общем случае.

Поскольку в java 9 была введена модульная система, теперь Oracle «защищает» эти пакеты даже во время компиляции.

Итак, очевидный способ - избавиться от этой зависимости в вашем коде. Почему они защищают? Потому что они оставляют за собой право изменять этот материал, как я уже сказал, это считается внутренним.

Добавление:

Вы можете попробовать (я не рекомендую) применить некоторые инструменты «разрешения проблем» из эта замечательная статья (прочтите главу «Незаконный доступ к внутренним API»), но, как утверждает автор этой статьи, самый простой способ - прекратить использование этих пакетов. в вашем коде, поэтому считайте это первой ставкой.

Другие вопросы по теме