1

我们有一个基于桌面的 Swing 应用程序在 oracle jdk1.8 上运行良好。迁移到 openjdk11 后,我们得到了com.sun.java.swing.Painter类的一些未找到异常,我们通过生成一个包含一些 com.sun.java.swing.Painter.java 类和一些 4- 类的包 jar 来解决这个问题5个班级,并由

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

现在,在 Windows 系统上使用 AdoptOpenJDK11 或 opendjdk11 一切正常。但是在 linux(ubnutu-64 位或任何基于 ARM 的 linux 环境)上,我们从我们使用的第三方库中找到了另一个未找到的类/没有与com.sun.java.swing.plaf.windows.WindowsLookAndFeel相关的类定义异常。

我们无法删除对 com.sun.java.swing.plaf.windows.WindowsLookAndFeel 的调用,因为它们位于第 3 方库中。该公司提供的库和其他论坛网站建议添加:

--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 starter_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(最近)

注意:Java 10 上的 Swing 问题没有帮助

4

0 回答 0