使用Jlink在一个平台上为另一个平台创建Java运行时映像
我在Linux机器上使用jlink创建了运行时映像。我在include
文件夹下看到linux
文件夹。这是否意味着我只能在Linux平台上使用这个运行时映像?如果是,有没有办法在一个平台上为另一个平台创建运行时映像(例如,在Linux for Windows上,反之亦然)
你可以在下面搜索框中键入要查询的问题!
我在Linux机器上使用jlink创建了运行时映像。我在include
文件夹下看到linux
文件夹。这是否意味着我只能在Linux平台上使用这个运行时映像?如果是,有没有办法在一个平台上为另一个平台创建运行时映像(例如,在Linux for Windows上,反之亦然)
# 1 楼答案
include
目录用于编译使用JNI和其他本机接口的C/C++代码时需要的头文件,例如jni.h
。这与jlink
无关jlink
工具可以为另一个平台创建运行时映像(交叉目标)。你需要下载两个JDK来实现这一点。一个用于运行jlink
的平台,另一个用于目标平台。使用module-path $TARGET/jmods
运行jlink
,其中$TARGET
是为目标平台解压JDK的目录# 2 楼答案
一般来说,艾伦·贝特曼的答案在信息方面没有任何补充,我将提供一个有效的例子This example演示了在Mac OS上使用
jlink
,然后在Docker容器中的Ubuntu上运行二进制文件要点如下
给出两个简单的模块,我们在Mac OS上编译:
假设Linux 64 JDK解包在本地目录(指定为命令行arg)中,我们将其称为
jlink
(在本例中,在Mac OS上)JAVA_HOME
是解决方案的关键:然后,假设我们已经为Docker提取了
ubuntu
映像,我们可以在Docker终端(即Linux)中执行以下操作:要重新迭代Java 9/
jlink
的这个特性,Linux没有安装Java,Linux二进制文件是在Mac OS上构建的