我试图为我的JAVA-9应用程序/项目拼图创建跨平台/独立于平台的可执行文件。
我认为jlink命令只会创建特定于平台的可执行文件/运行时。
发布于 2016-05-13 14:43:36
JLink (由9月282覆盖)创建模块化的运行时映像(由9月220覆盖,特别是新运行时映像结构一节)。这些映像是JRE、JDK和紧凑型概要文件的推广,并且与它们一样是操作系统特定的。因此,JLink不能用于创建跨平台可执行文件。
也就是说,可以在一个操作系统上运行JLink,并为不同的操作系统创建一个运行时映像。为此,您所要做的就是下载并解压缩JDK 9(与来自JLink的版本相同),并将其jmods
文件夹放在JLink调用的模块路径上。
发布于 2021-02-07 08:58:53
我知道这个问题由来已久,但在发布我的https://stackoverflow.com/q/66083431/15160716之前,它是我在谷歌上的最高成绩之一,所以我决定把我的发现也记录在这里。
在尝试使用jlink
for Java11创建运行时映像时,也遇到了同样的问题。问题归结为错误地引用了目标JDK的jmods
文件夹,这意味着JDK的模块没有在模块路径中找到。然后,jlink
默认将主机JDK的模块文件(以及相应的二进制文件、库等)包含在生成的运行时映像中。通过正确引用目标JDK的jmods
目录,生成的运行时映像包含特定于平台的可执行文件和附带的文件。
这是通过为Windows、Linux和MacOS创建运行时映像在Windows机器上进行测试的。
https://stackoverflow.com/questions/37210288
复制相似问题