您可以使用该jlink工具将一组模块及其依赖项组装和优化为自定义运行时映像。

概要

jlink [options] --module-path modulepath --add-modules module [, module...]

options

命令行选项用空格分隔。请参阅jlink选项。

modulepath

jlink工具发现可观察模块的路径。这些模块可以是模块化JAR文件,JMOD文件或分解模块。

module

要添加到运行时映像的模块的名称。该jlink工具添加了这些模块及其传递依赖项。

描述

该jlink工具将一组模块及其传递依赖关系链接在一起,以创建自定义运行时映像。

注意: 开发人员负责更新其自定义运行时映像。

jlink选项

--add-modules mod[, mod...]

将命名模块添加mod到默认的根模块集合中。根模块的默认集合为空。

--bind-services

链接服务提供者模块及其依赖性。

-c={0|1|2} 或者- --compress={0|1|2}

启用资源压缩:

0:无压缩

1:常量字符串共享

2: 压缩

--disable-plugin pluginname

禁用指定的插件。有关受支持插件的列表,请参见jlink插件。

--endian {little|big}

指定生成的图像的字节顺序。默认值为系统体系结构的格式。

-h 或者-help

打印帮助消息。

--ignore-signing-information

当在运行时映像中链接签名的模块化JAR时,可以抑制致命错误。签名的模块化JAR的与签名相关的文件不会复制到运行时映像。

--launcher command=module 或者 --launcher command=module/main

指定模块的启动器命令名称或模块和主类的命令名称(模块和主类名称之间用斜杠(/)分隔)。

--limit-modules mod[, mod...]

将可观察模块的范围限制为已命名模块mod,以及主模块(如果有)以及该--add-modules选项中指定的任何其他模块的传递闭包中的可观察模块。

--list-plugins

列出可用的插件,您可以通过命令行选项访问这些插件。请参阅jlink插件。

-p 或者- --module-path modulepath

指定模块路径。

如果未指定此选项,则默认模块路径为$JAVA_HOME/jmods。该目录包含java.base模块以及其他标准和JDK模块。如果指定了此选项,但是无法从中解析java.base模块,那么该jlink命令将追加$JAVA_HOME/jmods到模块路径。

--no-header-files

排除头文件。

--no-man-pages

不包括手册页。

--output path

指定生成的运行时映像的位置。

--save-opts filename

将jlink选项保存在指定的文件中。

--suggest-providers [name, ...]

从模块路径中建议实现给定服务类型的提供程序。

--version

打印版本信息。

@filename

从指定文件中读取选项。

选项文件是一个文本文件,其中包含您通常会在命令提示符下输入的选项和值。选项可能显示在一行或几行上。您不能为路径名指定环境变量。您可以通过#在行首添加一个井号()来注释掉行。

以下是该jlink命令的选项文件的示例:

复制#Wed Dec 07 00:40:19 EST 2016

--module-path mlib

--add-modules com.greetings

--output greetingsapp

jlink插件

注意: 不支持本节中未列出的插件,它们可能会发生变化。

对于需要使用的插件选项pattern-list,该值是逗号分隔的元素列表,每个元素使用以下一种形式:

glob-pattern

glob:glob-pattern

regex:regex-pattern

@filename

filename 是包含要使用的模式的文件名,每行一个模式。

要获取所有可用插件的完整列表,请运行命令jlink --list-plugins。

表2-4 jlink插件列表

插件名称 选项 描述

compress

--compress={0|1|2}[:filter=pattern-list]

压缩输出图像中的所有资源。

0级:无压缩

级别1:常量字符串共享

2级:ZIP

pattern-list可以指定一个可选的过滤器以列出要包括的文件模式。

include-locales

--include-locales=langtag[,langtag]*

包括langtagBCP 47语言标记所在的语言环境列表。该选项支持RFC 4647中定义的语言环境匹配。使用此选项时,请确保添加模块jdk.localedata。

例:

--add-modules jdk.localedata --include-locales=en,ja,*-IN

order-resources

--order-resources=pattern-list

按优先顺序对指定路径进行排序。如果指定,则输入的每一行必须与要订购的路径完全匹配。 @filenamepattern-list

例:

--order-resources=/module-info.class,@classlist,/java.base/java/lang/

strip-debug

--strip-debug

从输出映像中剥离调试信息。

jlink示例

以下命令在目录中创建运行时映像greetingsapp。此命令链接模块com.greetings,其模块定义包含在目录中mlib。

复制jlink --module-path mlib --add-modules com.greetings --output greetingsapp

以下命令列出了运行时映像中的模块greetingsapp:

greetingsapp/bin/java --list-modules

com.greetings

java.base@11

java.logging@11

org.astro@1.0

以下命令在compressedrt去除调试符号的目录中创建运行时映像,使用压缩来减少空间,并包括法语语言环境信息:

jlink --add-modules jdk.localedata --strip-debug --compress=2 --include-locales=fr --output compressedrt

下面的示例运行时的图像的大小进行比较compressedrt用fr_rt,这是不可剥离的调试符号的,并且不使用压缩:

jlink --add-modules jdk.localedata --include-locales=fr --output fr_rt

du -sh ./compressedrt ./fr_rt

23M ./compressedrt

36M ./fr_rt

以下示例列出了实现java.security.Provider的提供程序:

jlink --suggest-providers java.security.Provider

Suggested providers:

java.naming provides java.security.Provider used by java.base

java.security.jgss provides java.security.Provider used by java.base

java.security.sasl provides java.security.Provider used by java.base

java.smartcardio provides java.security.Provider used by java.base

java.xml.crypto provides java.security.Provider used by java.base

jdk.crypto.cryptoki provides java.security.Provider used by java.base

jdk.crypto.ec provides java.security.Provider used by java.base

jdk.crypto.mscapi provides java.security.Provider used by java.base

jdk.security.jgss provides java.security.Provider used by java.base

以下示例创建一个名为的自定义运行时映像mybuild,该映像仅包含java.naming和jdk.crypto.cryptoki及其依赖项,而没有其他提供程序。请注意,这些依赖项必须存在于模块路径中:

复制jlink --add-modules java.naming,jdk.crypto.cryptoki --output mybuild

以下命令类似于创建名为的运行时映像的命令greetingsapp,不同之处在于它将通过服务绑定链接从根模块解析的模块。请参见Configuration.resolveAndBind方法。

复制jlink --module-path mlib --add-modules com.greetings --output greetingsapp --bind-services

以下命令列出了greetingsapp此命令创建的运行时映像中的模块:

greetingsapp/bin/java --list-modules

com.greetings

java.base@11

java.compiler@11

java.datatransfer@11

java.desktop@11

java.logging@11

java.management@11

java.management.rmi@11

java.naming@11

java.prefs@11

java.rmi@11

java.security.jgss@11

java.security.sasl@11

java.smartcardio@11

java.xml@11

java.xml.crypto@11

jdk.accessibility@11

jdk.charsets@11

jdk.compiler@11

jdk.crypto.cryptoki@11

jdk.crypto.ec@11

jdk.crypto.mscapi@11

jdk.internal.opt@11

jdk.jartool@11

jdk.javadoc@11

jdk.jdeps@11

jdk.jfr@11

jdk.jlink@11

jdk.localedata@11

jdk.management@11

jdk.management.jfr@11

jdk.naming.dns@11

jdk.naming.rmi@11

jdk.security.auth@11

jdk.security.jgss@11

jdk.zipfs@11

org.astro@1.0

java中inform_java11教程--jlink工具相关推荐

  1. java中常用的加密工具

    java中常用的加密工具 1. md5加密工具类 public class MD5Utils {private static final String hexDigIts[] = {"0&q ...

  2. java中常用的日期工具类

    java中常用的日期工具类 日期相关的类: package net.yto.ofclacct.core.util;import java.text.ParseException; import jav ...

  3. java中定义一个CloneUtil 工具类

    其实所有的java对象都可以具备克隆能力,只是因为在基础类Object中被设定成了一个保留方法(protected),要想真正拥有克隆的能力, 就需要实现Cloneable接口,重写clone方法.通 ...

  4. Java中常用的 JSON工具

    Spring Cloud 2.x系列之网关zuul入门(三) Spring Cloud 2.x系列之网关zuul入门(二) 本篇通过JMH来测试一下Java中几种常见的JSON解析库的性能. 每次都在 ...

  5. java中时间常用处理工具类-DateUtils

    仅供参考,收录了一些常用的java中关于时间的处理方法,希望能帮到你! import org.apache.commons.lang3.time.DateFormatUtils;import java ...

  6. Java中的常用开发工具详解

    转载:https://blog.csdn.net/han0373/article/details/79180553 Java开发人员的常用工具 java常用的开发工具.都说工欲善其事必先利其器,要想学 ...

  7. Java中操作字符串的工具类-判空、截取、格式化、转换驼峰、转集合和list、是否包含

    场景 某些常用的对字符串进行处理的方法抽离出来成工具类,方便在多处应用. 常用的操作为: 判断是否为空 截取字符串 格式化文本 字符串转set 字符串转list 下划线转驼峰命名 是否包含字符串 注: ...

  8. java中文件操作的工具类

    代码: package com.lky.pojo;import java.io.BufferedReader; import java.io.BufferedWriter; import java.i ...

  9. JAVA中实用的一个工具类--Hutool

    什么是Hutool Hutool是一个Java工具包,也就是一个工具箱,一个utils集合,它帮助我们简化每一行代码,减少每一个方法,让Java语言也可以简单粗暴.Hutool最初是作者项目中&quo ...

最新文章

  1. 决策树算法(二)——构建数据集
  2. TCP/IP详解--第一章
  3. 各个大厂的机器学习平台概述
  4. 再谈软件测试-工作感悟
  5. 如何手动创建SAP S/4HANA的生产订单
  6. 线程和std::shared_ptr智能指针使用
  7. RabbitMQ 最新版安装 (Linux环境)
  8. 天津大学计算机预推免机试_2019预推免汇总 | 9.18New!
  9. c#操作ecxel的一些资源(downmoon搜集)
  10. was css,Sass无效的CSS…:期望的表达式(例如,1px,粗体),是“{”
  11. c语言找两个数中的最大值,不用任何比较判断找出两个数中的最大值
  12. java云端开发_云端编写Java代码的方法
  13. 【PostgreSQL-9.6.3】物化视图
  14. FISCO BCOS Solidity 如何import引入其他代码库 Source “Table.sol“ not found: File not found
  15. Atitit php读取数据库记录集合并循环修改展示//------------------------ini db sys$dbstr = “mysql:host=“ . $mysql_con
  16. U8Cloud 3.5 试用笔记
  17. 最小生生树算法-prim/kruskal
  18. Excel DATEDIF函数
  19. 服务器证书类型有哪些
  20. 东野圭吾《解忧杂货店》读后感

热门文章

  1. 第二十三章 : 打印
  2. Python实例8:利用条件结构计算个人所得税
  3. 群晖Synology Drive同步规则中过滤指定文件夹
  4. A4纸网页打印——宽高设置
  5. IOS 使用BurpSuite抓包
  6. QGIS下载在线地图(Google 卫星、esri 卫星)
  7. 系统时间与docker中mysql数据库时间相差八小时解决方法
  8. beego orm 时间相差八小时
  9. 北大青鸟java第二次月考笔试_北大青鸟ACCP 4.0一期笔试模拟题二(后24题)...
  10. allergro音乐术语什么意思_乐谱中Allegro Moderato是什么速度?