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

How do i get all the classes of sun.font in jdk9

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

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

error: package sun.font does not exist

更具体地说,我正在使用

还有更多..

模块系统的一个特点是它允许库开发人员由于新的 accessibility rules 而强烈封装实现细节。简而言之,sun.*com.sun.* 包中的大多数类型将不再可用。这与 Sun 和后来的 Oracle 声明这些软件包不适合 public 消费的说法一致。

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

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

这会将包 sun.font 从模块 java.desktop 导出到所有模块,包括 unnamed module,这是一个收集所有模块的模块class在 class 路径上。