Как мне получить все классы солнца.шрифт в jdk9

У меня есть моя старая кодовая база, которая в настоящее время использует java8.

я переношу свою кодовую базу на использование jdk9-ea. Но похоже на солнце.классы шрифтов теперь недоступны, как раньше

error: package sun.font does not exist

более конкретно я использую

  • CompositeFont
  • Font2D
  • FontDesignMetrics
  • FontManager
  • FontManagerFactory
  • SunFontManager

и многое другое..

1 ответов


особенностью модульной системы является то, что она позволяет разработчикам библиотек сильно инкапсулировать детали реализации из-за нового правила доступности. В двух словах, большинство типов в sun.* и com.sun.* пакеты больше не будут доступны. Это соответствует Sun и более позднему заявлению Oracle о том, что эти пакеты не предназначены для общественного потребления.

обходным путем является экспорт этих пакетов во время компиляции и запуска с помощью командной строки флаг:

--add-exports java.desktop/sun.font=ALL-UNNAMED

это экспортирует пакет sun.font в модуле java.столе для всех модулей, в том числе безымянный модуль, который является тем, который собирает все классы на пути к классу.