You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SWT跨平台Maven项目如何配置module-info.java兼容Windows与Linux

SWT跨平台Maven项目JPMS模块配置解决方案

你遇到的冲突本质是两个平台的SWT依赖都导出了org.eclipse.swt同名包,JPMS模块系统禁止同一个模块从多个不同模块读取同名包,且你之前直接依赖带平台后缀的模块名是错误用法,可根据需求选择以下两种方案:

方案1:分平台构建(推荐,符合JPMS规范)

步骤1:配置Maven操作系统激活Profile

在pom.xml中添加如下配置,让Maven根据构建环境自动引入对应平台的SWT依赖,避免两个依赖同时加载:

<profiles>
    <!-- Windows平台自动激活 -->
    <profile>
        <id>windows</id>
        <activation>
            <os>
                <family>Windows</family>
                <arch>amd64</arch>
            </os>
        </activation>
        <dependencies>
            <dependency>
                <groupId>org.eclipse.platform</groupId>
                <artifactId>org.eclipse.swt.win32.win32.x86_64</artifactId>
                <version>你的SWT版本号</version>
            </dependency>
        </dependencies>
    </profile>
    <!-- Linux平台自动激活 -->
    <profile>
        <id>linux</id>
        <activation>
            <os>
                <family>Linux</family>
                <arch>amd64</arch>
            </os>
        </activation>
        <dependencies>
            <dependency>
                <groupId>org.eclipse.platform</groupId>
                <artifactId>org.eclipse.swt.gtk.linux.x86_64</artifactId>
                <version>你的SWT版本号</version>
            </dependency>
        </dependencies>
    </profile>
</profiles>

步骤2:编写module-info.java

SWT官方已经在所有平台构件的MANIFEST.MF中统一指定了自动模块名为org.eclipse.swt,因此不需要带平台后缀,直接写:

module 你的项目模块名 {
    // 其余项目依赖声明
    requires org.eclipse.swt;
}

该方案下本地开发会自动适配当前操作系统的依赖,打包时在对应平台执行构建即可生成对应平台的可运行包,也可以手动指定Profile构建指定平台的包,执行命令为mvn clean package -P linux或mvn clean package -P windows。

方案2:单包支持多平台(无需分平台构建,需放弃JPMS)

如果你需要打出一个包同时在Windows和Linux上运行,JPMS的模块约束无法满足这种同名包多来源的场景,直接放弃模块系统即可:

  1. 删掉项目中的module-info.java,退回到类路径(ClassPath)运行模式
  2. 在pom.xml中直接同时引入两个平台的SWT依赖,无需配置Profile
    运行时JVM会自动根据当前操作系统加载对应平台的SWT类和原生库,不会出现包冲突问题。

内容的提问来源于stack exchange,提问作者iljau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 03:45:03