module-info.java for SWT跨平台maven项目

module-info.java for SWT cross-platform maven project

在 Windows 上使用包 org.eclipse.swt.win32.win32.x86_64,而对于 Linux 构建它是 org.eclipse.swt.gtk.linux.x86_64.

  1. 如果module-info.java中没有指定任何内容,错误消息是java: package org.eclipse.swt does not exist

  2. 如果在module-info.java中都指定了:

    requires org.eclipse.swt.gtk.linux.x86_64;
    requires org.eclipse.swt.win32.win32.x86_64;
    

    错误信息:module ... reads package org.eclipse.swt from both org.eclipse.swt.gtk.linux.x86_64 and org.eclipse.swt.win32.win32.x86_64

  3. 如果只指定一个requires,则项目只能在一个平台上运行。

什么是 module-info.java 的正确设置,以便该项目在两个平台上都能 运行?

它是 SWT 中的 bug 559162。它们在 SWT jar 文件清单中的 Automatic-Module-Name 不切实际。

我建议坚持使用无模块构建(没有模块-info.java)直到这个问题得到解决。