我正在使用Maven构建我的JavaFX应用程序,如下所示:
pom.xml中定义的依赖项:
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>${javafx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>${javafx.version}</version>
</dependency>
Maven构建命令:
mvn package -Djavafx.platform=mac
这将在跨平台构建时设置平台限定符。以下Maven分类器可用:
win,mac,linux
(See https://openjfx.io/openjfx-docs/“跨平台”)
现在如果我用mac分类器构建,然后尝试用aarch64 JRE执行,这就不起作用了。显然mac分类器指定了mac x64体系结构,这不适合aarch64 JRE。
我可以为mac指定aarch64的依赖版本吗?
1条答案
按热度按时间h43kikqp1#
这个question解决了一个类似的问题,但现在有点过时了,因为从JavaFX 17开始添加了macOS AArch64支持。
在JavaFX 17之前,
javafx.pom
parent pom包含以下Maven配置文件:linux
与javafx.platform=linux
javafx.platform=mac
的macosx
windows
与javafx.platform=win
javafx.platform=${javafx.platform}
的自定义配置文件javafx.platform.custom
由于支持新的体系结构,并且从JavaFX 17开始,parent pom包含以下Maven配置文件:
linux-x86_64
与javafx.platform=linux
或javafx.platform=linux-monocle
配合使用linux-aarch64
与javafx.platform=linux-aarch64
或javafx.platform=linux-aarch64-monocle
结合使用linux-arm32
和javafx.platform=linux-arm32-monocle
macosx-aarch64
与javafx.platform=mac-aarch64
或javafx.platform=mac-aarch64-monocle
配合使用windows-x86_64
与javafx.platform=win
或javafx.platform=win-monocle
配合使用javafx.platform=${javafx.platform}
的自定义配置文件javafx.platform.custom
因此,如果您要进行仅包含macOS AArch64依赖项的跨平台构建,您只需:
当然,这只适用于Gluon发布到Maven Center的JavaFX工件,而不适用于其他发行版(JavaFX SDK或捆绑在Java SDK中)。
注意:这些配置文件有一个
monocle
替代选项,如果您在pom中包含javafx.monocle
属性,则可以激活该选项:这允许使用带有或不带有monocle(用于嵌入式系统的JavaFX的Glass窗口组件的实现)的JavaFX工件,就像您从https://gluonhq.com/products/javafx/下载SDK一样。例如,如果您在没有窗口管理器的情况下在Raspberry Pi的命令行上运行,这将非常有用。