有没有办法让 Java 9 停止抱怨无法访问的包?

Is there a way to get Java 9 to stop complaining about inaccessible packages?

我正在切换到 Java 9(为了 HTTP/2 客户端,以及其他好处),但不打算使用 Java 9 模块化。

我收到大量关于无法访问包的编译器错误。每个都需要我添加一个额外的 --add-exports modulename/packagename=ALL-UNNAMED 编译器标志。

是否有一些我可以指定的编译器标志,一次性添加所有导出并且不会再出现编译器错误?

这是显示问题的示例代码:

package com.prosc.fx;

import com.sun.javafx.stage.WindowHelper;

public class CompilerFlagTest {
    public static void main(String[] args) {
        WindowHelper.getWindowAccessor();
    }
}

错误信息是:

Error:(3, 22) java: package com.sun.javafx.stage is not visible (package com.sun.javafx.stage is declared in module javafx.graphics, which does not export it to the unnamed module)

你提到的类和包在私有包中,在阶梯中是一个新的可见级别。这意味着您可能无法访问它们,因为整个模块化是强制性的,而不是可选的。即使您不使用模块化,您也在使用它。

所以帮自己一个忙,使用 public API。