Я перевожу многоплатформенное настольное приложение (Windows и Linux) из java8 в OpenJDK 11. Код расширяет класс Swing, и для этого мы определяем новый класс, который расширяет внутренний класс API WindowsTabbedPaneUI
. Этот класс используется, когда приложение работает в Windows.
Код выполняет следующие действия:
...
if (this.getUI() instanceof WindowsTabbedPaneUI) {
this.setUI(new CustomWindowsTabbedPaneUI());
}
...
, где CustomWindowsTabbedPaneUI
расширяется WindowsTabbedPaneUI
.
Это работалохорошо с java 8. Однако теперь, когда я запускаю java 11 jre, выдается следующее исключение:
java.lang.Exception: java.lang.NoClassDefFoundError: com/sun/java/swing/plaf/windows/WindowsTabbedPaneUI
Я пытался использовать опции --add-opens и --add-exports при запуске приложения. но я не мог заставить это работать. Я понимаю, что причина в том, что Linux JRE для Java 11 не включает этот класс. Я полагаю, что это так, поскольку при выполнении команды ниже не перечисляется пакет com.sun.java.swing.plaf.windows
:
java --describe-module java.desktop
Любая помощь приветствуется.