8

使用 编译时ant,调用sun.awt.AppContext工作,但是使用 IntelliJ 编译的相同代码使用 AdoptOpenJDK11 失败。

  • sun.awt.AppContextOracle JDK8一起使用 IntelliJ
  • sun.awt.AppContextAdoptOpenJDK11不适用于 IntelliJ

尽管 Sun/Oracle 已经警告过一段时间不要使用这些sun.*软件包,但Java 中的某些特性(错误?)仍然需要它们,而且更奇怪的是,命令行似乎很开心。

示例代码:

package test;

import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import sun.awt.AppContext;

public class Main {

    public static void main(String[] args) {
        //Update printer list in CUPS immediately
        AppContext.getAppContext().put(PrintServiceLookup.class.getDeclaredClasses()[0], null);

        PrintService[] printers = PrintServiceLookup.lookupPrintServices(null, null);
        for (PrintService p : printers) {
            System.out.println(p.getName());
        }
    }
}

在此处输入图像描述

如何配置 IntelliJ 的行为ant并允许访问sun.awt.*包?

4

1 回答 1

15

禁用使用“--release”选项...

发布

有关详细信息,请参阅此答案

于 2019-05-31T03:04:52.903 回答