用于 SWT 跨平台 Maven 项目的 module-info.java。

4
在Windows软件包中使用org.eclipse.swt.win32.win32.x86_64,而在Linux构建中使用org.eclipse.swt.gtk.linux.x86_64
  1. If nothing is specified in module-info.java, error message is java: package org.eclipse.swt does not exist

  2. If in module-info.java both are specified:

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

    error message: module ... reads package org.eclipse.swt from both org.eclipse.swt.gtk.linux.x86_64 and org.eclipse.swt.win32.win32.x86_64

  3. If only one requires is specified, then project works only on one platform.

为了使项目能够在两个平台上运行,module-info.java 的设置应该是什么样的?


在编写 SWT 应用程序时,不可能构建一个可在所有平台上运行的单一应用程序,您需要为每个平台构建一个单独的版本。 - greg-449
我在Maven中使用不同的构建配置文件,因此根据平台(Unix/Windows)添加相应的SWT依赖项。这个方法可以正常工作,但是当尝试添加module-info.java时就会出现问题。 - iljau
这里有一个相关的问题链接,答案只是使用了requires swt;,不确定它是否真正解决了跨平台的问题。 - greg-449
这只是一个SWT应用程序还是基于Eclipse的RCP?[tag:tycho] 用于RCP构建并理解跨平台。 - greg-449
看起来链接答案中的 requires swt 来自于下载的 zip 文件中的 swt.jar。由于我正在使用从 Maven 构建的 SWT,因此我的模块名称如问题所述。我的问题是如何在 module-info.java 中指定 requires,以便适用于 Linux 和 Windows 构建。 - iljau
显示剩余2条评论
1个回答

0

这是SWT中的bug 559162。他们在SWT jar文件清单中的自动模块名称不切实际。

我建议在此问题得到解决之前,坚持使用无模块(没有module-info.java)的构建。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接