首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用JDK 9 jar工具的散列模块和模块路径选项?

如何使用JDK 9 jar工具的散列模块和模块路径选项?
EN

Stack Overflow用户
提问于 2017-07-29 08:21:00
回答 2查看 1.2K关注 0票数 3

我希望计算并记录与给定模式匹配的模块哈希,该模式直接依赖于正在更新的模块JAR文件。为此,请使用--hash-modules--module-path选项。以下是我的尝试:

代码语言:javascript
复制
jar --hash-modules com.me.util --module-path "dist\com.me.jar;dist\com.me.util.jar"  --update --file dist/com.me.jar --main-class=com.me.A --verbose --module-version 0.1 -C build/modules/com.me module-info.class build/modules/com.me/com/me/A.class build/modules/com.me/com/me/B.class

jar --hash-modules "com.me.util;com.me.util" --module-path "dist\com.me.jar;dist\com.me.util.jar"  --update --file dist/com.me.jar --main-class=com.me.A --verbose --module-version 0.1 -C build/modules/com.me module-info.class build/modules/com.me/com/me/A.class build/modules/com.me/com/me/B.class

当我尝试这样做时,我会收到警告消息:“com.me中没有在散列中记录任何模块”。

这些命令将创建没有任何错误的*.jar文件(模块),但它们不会添加任何哈希信息。我希望看到这些信息并利用这个功能(--hash-modules--module-path选项)。请告诉我怎么做!

项目文件夹的完整结构可以找到这里

我使用jar工具的选项的实验和工作示例是这里

Java平台,标准版工具参考(jar)中描述的下列操作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-29 12:05:57

乌达夫·高塔姆,感谢您提供的附加文档的链接

在仔细阅读了文档(包装:模块化JAR文件(JEP 261:模块系统)(Java平台,标准版工具参考))之后,我意识到应该给出哪些参数来解决这个任务。

下面是一个有用的例子:

代码语言:javascript
复制
#Working command:
#Create module:
jar --hash-modules "com.me" --module-path "dist/com.me.jar" --verbose --create --file dist/com.me.util.jar -C build/modules/com.me.util module-info.class  build/modules/com.me.util/com/me/util/Util.class
jar --hash-modules "com.me" --module-path "dist/com.me.jar" -v -c -f dist/com.me.util.jar -C build/modules/com.me.util module-info.class  build/modules/com.me.util/com/me/util/Util.class

#Update module:
jar --hash-modules "com.me" --module-path "dist/com.me.jar" --verbose --update --file dist/com.me.util.jar -C build/modules/com.me.util module-info.class
jar --hash-modules "com.me" --module-path "dist/com.me.jar" -v -u -f dist/com.me.util.jar -C build/modules/com.me.util module-info.class

若要查看选项的结果,请使用以下命令:

代码语言:javascript
复制
#Describe module:
jar --file dist/com.me.util.jar --describe-module

结果应该是这样:

代码语言:javascript
复制
com.me.util jar:file:///C:/my_ch1_9/dist/com.me.util.jar/!module-info.class
exports com.me.util
requires java.base mandated
hashes com.me SHA-256 85c0539e4ca9a01b00f4c29a1a8b01cd452d1d97f437166b8bb415046dac65cb
票数 4
EN

Stack Overflow用户

发布于 2017-07-29 08:43:00

--hash-modules <ProvidePatternHere> /*你缺少模式*/

http://openjdk.java.net/jeps/261

仅为名称与正则表达式匹配的模块记录散列。

代码语言:javascript
复制
--module-path <LinkToModule>

因此,完整的示例如下所示:

代码语言:javascript
复制
jar --hash-modules "*.jar" --module-path "dist" ... and your other stuffs here.
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45387075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档