Я пытаюсь перенести приложение с Java 8 на Java 11. Когда я пытаюсь собрать проект в IntelliJ, я получаю ошибку package sun.util does not exist?
Есть идеи о том, что случилось?
Спасибо!
В зависимости от sun. * Классы всегда опасны и хрупки, так как они могут измениться или быть удалены в любой момент. javac выдавал предупреждение об этом во многих выпусках. Какой класс sun.util. * Вы используете? Просто интересно, есть ли стандартный API, который вы могли бы использовать вместо этого.
Я использовал ResourceBundleEnumeration для реализации нашего собственного ResourceBundle. Но я разработал способ сделать это с помощью new Vector<>(keySet).elements(), который, кажется, работает.




Пакеты com.sun.* и sun.* содержат внутреннее содержимое и не должны использоваться сторонними приложениями (например, ваше, вероятно) в общем случае.
Поскольку в java 9 была введена модульная система, теперь Oracle «защищает» эти пакеты даже во время компиляции.
Итак, очевидный способ - избавиться от этой зависимости в вашем коде. Почему они защищают? Потому что они оставляют за собой право изменять этот материал, как я уже сказал, это считается внутренним.
Добавление:
Вы можете попробовать (я не рекомендую) применить некоторые инструменты «разрешения проблем» из эта замечательная статья (прочтите главу «Незаконный доступ к внутренним API»), но, как утверждает автор этой статьи, самый простой способ - прекратить использование этих пакетов. в вашем коде, поэтому считайте это первой ставкой.
Oracle купили солнце в 2010 г.!