我如何在jdk9中获得sun.font的所有类

jin*_*ish 7 java java-9

我有我的旧代码库,目前使用java8.

我正在迁移我的代码库以使用jdk9-ea.但看起来所有的sun.font类都不像以前那样可用

error: package sun.font does not exist
Run Code Online (Sandbox Code Playgroud)

更具体地说,我正在使用

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

和更多..

Nic*_*lai 9

模块系统的一个特性是它允许库开发人员强烈封装由于新的可访问性规则而导致的实现细节.简而言之,大多数类型sun.*com.sun.*包都将无法访问.这与Sun和后来的Oracle一致,表明这些软件包不适合公共消费.

解决方法是在编译和启动时使用命令行标志导出这些包:

--add-exports java.desktop/sun.font=ALL-UNNAMED
Run Code Online (Sandbox Code Playgroud)

会将sun.font从模块java.desktop导出到所有模块,包括未命名的模块,该模块收集类路径上的所有类.