OpenJDK 11: класс не найден, ошибка com.sun.java.swing.plaf.windows.WindowsLookAndFeel (linux)

У нас есть настольное свинг-приложение, которое отлично работает с oracle jdk1.8. После перехода на openjdk11 мы получили несколько ненайденных исключений для классов com.sun.java.swing.Painter. Мы решили эту проблему, сгенерировав jar-пакет, содержащий некоторые классы com.sun.java.swing. Painter.java и несколько классов 4-5 и добавил его

java --patch-module java.desktop=custombundle.jar -classpath path_of_jars start_class

Теперь все отлично работает с AdoptOpenJDK11 или opendjdk11 в системах Windows. Но в Linux (64-разрядная версия ubnutu или любая среда Linux на базе ARM) мы получили еще один класс, не найденный/нет исключений определения класса, связанных с com.sun.java.swing.plaf.windows.WindowsLookAndFeel из сторонние библиотеки, которые мы использовали.

Мы не можем удалить вызовы com.sun.java.swing.plaf.windows.WindowsLookAndFeel, потому что они находятся в сторонних библиотеках. Компания, предоставляющая библиотеки, а также другие форумы предлагают добавить:

--add-exports java.desktop/com.sun.java.swing.plaf.windows=ALL-UNNAMED

java --add-exports java.desktop/com.sun.java.swing.plaf.windows=ALL-UNNAMED --patch-module java.desktop=custombundle.jar -classpath path_of_jars start_class

но после добавления этого получите предупреждение, например

ВНИМАНИЕ: пакет com.sun.java.swing.plaf.windows отсутствует в java.desktop

и мы получили все еще класс не найденных исключений для com.sun.java.swing.plaf.windows.WindowsLookAndFeel

Я попробовал java.desktop/com.sun.java.swing.plaf.gtk вместо java.desktop/com.sun.java.swing.plaf.windows, предупреждение исчезло, но все еще не работает. Какие-либо предложения?

Принять версию Openjdk: последняя (11.0.8.10)

Ubuntu: 20.04 (последняя)

Примечание. Swing Issue на Java 10 не помогло.


person benchpresser    schedule 20.07.2020    source источник
comment
Классы для WindowsLookAndFeel включены только в версии Jdk для Windows.   -  person weisj    schedule 20.07.2020
comment
да, я видел их с --describe. поэтому решение должно быть связано с обновлением третьей стороной и т. д. Я думаю   -  person benchpresser    schedule 20.07.2020
comment
Но в Linux (64-разрядная версия ubnutu или любая среда Linux на основе ARM) мы получили еще один класс, не найденный/нет исключений определения класса, связанных с com.sun.java.swing.plaf.windows.WindowsLookAndFeel из сторонних библиотек, которые мы С какой стати пользователи Linux хотят видеть графический интерфейс в стиле Windows?!? Безопаснее всего использовать нативный PLAF. Затем пользователи всех систем увидят графический интерфейс, который очень похож (а в некоторых случаях неотличим от) на другие приложения в их ОС.   -  person Andrew Thompson    schedule 20.07.2020
comment
Привет, ты решил это? Одна из моих сторонних библиотек виджетов также использует WindowsLookAndFeel...   -  person lvr123    schedule 15.03.2021
comment
Я создал ручную банку, содержащую классы, я знаю, что это не лучшее решение и кажется странным, но сработало.   -  person benchpresser    schedule 08.05.2021