jmod是java的文件嘛_java11教程--jmod命令

您可以使用jmod工具创建JMOD文件并列出现有JMOD文件的内容。

概要

jmod (create|extract|list|describe|hash) [options] jmod-file

包括以下内容:

主要操作模式

create

创建一个新的JMOD存档文件。

extract

从JMOD存档文件中提取所有文件。

list

打印所有条目的名称。

describe

打印模块详细信息。

hash

确定叶模块并记录直接和间接需要它们的依赖项的哈希值。

选件

options

请参阅jmod的选项。

需要

jmod-file

指定要创建或从中检索信息的JMOD文件的名称。

描述

注意:对于大多数开发任务,包括在模块路径上部署模块或将其发布到Maven存储库,请继续将模块打包在模块化JAR文件中。该jmod工具适用于具有本机库或其他配置文件的模块,或者适用于您打算与该jlink工具链接到运行时映像的模块。

JMOD文件格式使您可以聚合.class文件,元数据和资源以外的文件。此格式是可移植的,但不能执行,这意味着您可以在编译时或链接时使用它,但不能在运行时使用它。

许多jmod选项涉及指定路径,其内容将复制到生成的JMOD文件中。这些选项复制指定路径的所有内容,包括子目录及其内容,但排除名称与该--exclude选项指定的模式匹配的文件。

使用该--hash-modules选项或jmod hash命令,您可以在每个模块的描述符中记录允许依赖它的模块内容的哈希值,从而将这些模块“绑定”在一起。这样一来,软件包就可以通过合格的导出导出到一个或多个特定模块,而不会导出到其他模块。运行时验证模块记录的哈希是否与运行时解析的哈希匹配;如果不是,则运行时返回错误。

jmod的选项

--class-path path

指定应用程序JAR文件的位置或包含要复制到结果JMOD文件中的类的目录。

--cmds path

指定要复制到生成的JMOD文件中的本机命令的位置。

--config path

指定要复制到结果JMOD文件中的用户可编辑配置文件的位置。

–-dir path

指定jmod放置从指定的JMOD存档提取的文件的位置。

--dry-run

执行哈希模式的空运行。它标识叶子模块及其必需的模块,而无需记录任何哈希值。

--exclude pattern–list

排除与提供的逗号分隔模式列表匹配的文件,每个元素使用以下一种格式:

glob-pattern

glob:glob-pattern

regex:regex-pattern

有关的语法,请参见FileSystem.getPathMatcher方法glob-pattern。有关的语法,请参见Pattern类regex-pattern,它表示正则表达式。

--hash-modules regex-pattern

根据与给定匹配的模块的模块图,确定叶子模块并直接或间接记录依赖项的哈希值regex-pattern。哈希记录在要创建的JMOD归档文件中,或者记录在jmod hash命令指定的模块路径上的JMOD归档文件或模块化JAR中。

--header-files path

指定要复制到生成的JMOD文件中的头文件的位置。

--help 或 -h

打印使用情况消息。

--help-extra

打印帮助以获取更多选项。

–-legal-notices path

指定要复制到生成的JMOD文件中的法律声明的位置。

--libs path

指定要复制到生成的JMOD文件中的本机库的位置。

--main-class class-name

指定要记录在module-info.class文件中的主类。

--man-pages path

指定要复制到生成的JMOD文件中的手册页的位置。

--module-version module-version

指定要记录在module-info.class文件中的模块版本。

--module-path path 或 -p path

指定模块路径。如果还指定,则此选项是必需的--hash-modules。

--target-platform platform

指定目标平台。

--version

打印jmod工具的版本信息。

@filename

从指定文件中读取选项。

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

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

#Wed Dec 07 00:40:19 EST 2016

create --class-path mods/com.greetings --module-path mlib

--cmds commands --config configfiles --header-files src/h

--libs lib --main-class com.greetings.Main

--man-pages man --module-version 1.0

--os-arch "x86_x64" --os-name "Mac OS X"

--os-version "10.10.5" greetingsmod

jmod的额外选项

除了jmod的选项中描述的选项之外,以下是可与该命令一起使用的其他选项。

--do-not-resolve-by-default

从默认的模块根目录排除

--warn-if-resolved

如果模块已解决,则提示工具发出警告。已淘汰,已淘汰或已孵化的其中一种。

jmod创建示例

以下是创建JMOD文件的示例:

jmod create --class-path mods/com.greetings --cmds commands

--config configfiles --header-files src/h --libs lib

--main-class com.greetings.Main --man-pages man --module-version 1.0

--os-arch "x86_x64" --os-name "Mac OS X"

--os-version "10.10.5" greetingsmod

jmod哈希示例

下面的示例演示了当您尝试将叶子模块(在此示例中为ma)与所需模块(mb)链接并且所需模块中记录的哈希值与该叶子模块的哈希值不匹配时发生的情况。

创建并编译以下.java文件:

jmodhashex/src/ma/module-info.java

module ma {

requires mb;

}

jmodhashex/src/mb/module-info.java

module mb {

}

jmodhashex2/src/ma/module-info.java

```module ma {

requires mb;

}

jmodhashex2/src/mb/module-info.java

module mb {

}

为每个模块创建一个JMOD存档。创建目录jmodhashex/jmods和jmodhashex2/jmods,然后从jmodhashex目录运行以下命令,然后从jmodhashex2目录运行:

jmod create --class-path mods/ma jmods/ma.jmod

jmod create --class-path mods/mb jmods/mb.jmod

(可选)预览jmod hash命令。从jmodhashex目录运行以下命令:

jmod hash --dry-run -module-path jmods --hash-modules .*

该命令将显示以下内容:

Dry run:

mb

hashes ma SHA-256 07667d5032004b37b42ec2bb81b46df380cf29e66962a16481ace2e71e74073a

这表明jmod hash命令(不带--dry-run选项)将在模块ma中记录叶子模块的哈希值mb。

在jmodhashex目录中包含的JMOD存档文件中记录哈希值。从jmodhashex目录运行以下命令:

jmod hash --module-path jmods --hash-modules .*

该命令将显示以下内容:

复制Hashes are recorded in module mb

打印有关jmodhashex目录中包含的每个JMOD存档的信息。从jmodhashex目录运行突出显示的命令:

jmod describe jmods/ma.jmod

ma

requires mandated java.base

requires mb

jmod describe jmods/mb.jmod

mb

requires mandated java.base

hashes ma SHA-256 07667d5032004b37b42ec2bb81b46df380cf29e66962a16481ace2e71e74073a

尝试创建一个包含该模块的运行时图像ma从目录jmodhashex2,但该模块mb从目录jmodhashex。从jmodhashex2目录运行以下命令:

Oracle Solaris,Linux和macOS: jlink --module-path $JAVA_HOME/jmods:jmods/ma.jmod:../jmodhashex/jmods/mb.jmod --add-modules ma --output ma-app

视窗: jlink --module-path %JAVA_HOME%/jmods;jmods/ma.jmod;../jmodhashex/jmods/mb.jmod --add-modules ma --output ma-app

该命令将显示类似于以下内容的错误消息:

```Error: Hash of ma (a2d77889b0cb067df02a3abc39b01ac1151966157a68dc4241562c60499150d2) differs to

expected hash (07667d5032004b37b42ec2bb81b46df380cf29e66962a16481ace2e71e74073a) recorded in mb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值