При компиляции с помощью ant
вызовы sun.awt.AppContext
работают, однако тот же код, скомпилированный с помощью IntelliJ, не работает с использованием AdoptOpenJDK11.
sun.awt.AppContext
с Оракл JDK8 работает с IntelliJsun.awt.AppContext
с ПринятьOpenJDK11 НЕ работает с 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.*
пакетам?
Отключить Используйте параметр --release...:
Смотрите этот ответ для подробностей.
Большое спасибо, это была проблема и для моего проекта.
Спасибо, это сработало. На Mac это было расположено в
IntelliJ IDEA > Preferences > Build, Execution, Deployment > Java Compiler
.