我有 3 罐杰克逊图书馆
- 杰克逊核心-2.8.10.jar
- Jackson-annotations-2.8.0.jar
- 杰克逊-databind-2.8.10.jar
我成功地为核心和注释创建了 module-info.java ,并使用 jdeps 将它们转换为 Named maodule 。
对于 databind ,我尝试了以下命令:
jdeps --generate-module-info 。 --模块路径%JAVA_HOME%\jomds;jackson.core;jackson.annotations现有mods\jackson-databind-2.8.10.jar
现在发生以下错误:
Missing dependence: .\jackson.databind\module-info.java not generated
Error: missing dependencies
com.fasterxml.jackson.databind.AnnotationIntrospector -> com.fasterxml.jackson.annotation.JsonCreator not found
com.fasterxml.jackson.databind.AnnotationIntrospector -> com.fasterxml.jackson.annotation.JsonCreator$Mode not found
com.fasterxml.jackson.databind.AnnotationIntrospector -> com.fasterxml.jackson.annotation.JsonFormat not found
com.fasterxml.jackson.databind.AnnotationIntrospector -> com.fasterxml.jackson.annotation.JsonFormat$Value not found
com.fasterxml.jackson.databind.AnnotationIntrospector -> com.fasterxml.jackson.annotation.JsonIgnoreProperties not found
com.fasterxml.jackson.databind.AnnotationIntrospector -> com.fasterxml.jackson.annotation.JsonIgnoreProperties$Value not found.
如何为 jackson-databind 生成 module-info.java ?
简而言之,是的,您必须将库转换为显式模块。
The jlink
工具旨在提供仅包含所需模块的修剪后的二进制映像。问题是自动模块可以访问类路径(也称为未命名模块),它可以读取所有 JDK 模块。所以什么都不会被修剪。
这个线程 http://mail.openjdk.java.net/pipermail/jigsaw-dev/2016-July/008557.html也说明了这一点,并附有 YouTube 视频的链接。
这个例子 https://github.com/codetojoy/easter_eggs_for_java_9/tree/master/egg_21_JLink_With_Converted_Jar皈依者commons-lang3-3.5.jar
到一个显式模块jlink
demo.
Edit: 更具体,这是一个例子 https://github.com/codetojoy/easter_eggs_for_java_9/tree/master/egg_34_stack_overflow_47727869按顺序转换的脚本,jackson-core
, jackson-annotations
, and jackson-databind
遗留罐子到模块化罐子。
这个想法是:
- run
jdeps --generate-module-info
在遗留罐子上
- 将遗留jar解压到一个文件夹中,添加
module-info.java
从上面,重新编译,并重新压缩
诀窍在于,具有依赖项的模块化 jar 将需要这些依赖项作为命令行参数。例如,这里是jackson-databind
(稍微抽象一下):
# here, jackson-core and jackson-annotations have been built
# jackson-databind
jdeps --module-path $ROOT_DIR/modules \
--add-modules jackson.annotations,jackson.core \
--generate-module-info work $JACKSON_DATABIND_JAR
javac --module-path $ROOT_DIR/modules \
--add-modules jackson.annotations,jackson.core \
-d $ROOT_DIR/classes module-info.java
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)