2016-10-28 4 views
4

Я загрузил java 9 из https://jdk9.java.net и установил его на свою машину с Windows 10.
Java 9 имеет jshell, который я могу использовать для оценки и изучения Java-программирования.
Некоторые примеры импортируют пакеты для солнца, такие как sun.audio.* и т. Д. Но, в jshell, каждый раз, когда я пытаюсь импортировать любой пакет солнца, он говорит, что пакет солнца не существует.Почему я не могу импортировать пакеты солнца?

Некоторые приложения не работают с java 9. Возможно, существуют несовместимости?

ответ

8

Похоже, что это связано с тем, как Java 9 пытается поддерживать инкапсуляцию для реальных, в отличие от того, как это было сделано в прошлом. Возможно, ваши внутренние классы были подвержены потребителям, потому что ваш публичный API использовал эти внутренние классы. Аналогичные проблемы возникли у внутренних пакетов Sun.

Есть три темы в истории модульности для Java 9: ​​

  • в
  • на модулях
  • Скрыть внутренности платформы JDK и JRE (например sun.misc)
  • системы модуля для разработчиков приложений

http://paulbakker.io/java/java-9-modularity/

Для вашего конкретного случая внутренние модули солнца недоступны для импорта по умолчанию, и это хорошая вещь.

Тем не менее, модули могут быть добавлены в JShell благодаря исправлению.

Там должно быть «добавить модули» поддержки, а также «добавить экспорт» и «модуль пути», чтобы дать людям возможность исследовать свой собственный модульный код. https://bugs.openjdk.java.net/browse/JDK-8166649

Вы хотите отслеживать, что билет ошибка, чтобы увидеть, когда это исправление доступно. Это было просто разрешено 4 дня назад.

+2

Хорошее исследование! Исправление должно быть доступно в раннем доступе JDK 9 на jdk9.java.net к концу следующей недели. –

Смежные вопросы