opt*_*nal 6 jar java-9 jdeps java-module
我有3罐杰克逊图书馆
我成功地为core和annotation创建了module-info.java,并使用jdeps将它们转换为Named maodule.
对于数据绑定,我尝试了以下命令:
jdeps --generate-module-info.--module-path%JAVA_HOME%\ jomds; jackson.core; jackson.annotations existingmods\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.
Run Code Online (Sandbox Code Playgroud)
如何为jackson-databind生成module-info.java?
Mic*_*ter 15
简短的回答是,是的,您必须将库转换为显式模块.
该jlink
工具旨在提供仅具有所需模块的修剪二进制图像.问题是自动模块可以访问可以读取所有JDK模块的类路径(也就是未命名的模块).所以什么都不会被削减.
此主题也说明了这一点,并附有YouTube视频的链接.
此示例转换commons-lang3-3.5.jar
为jlink
演示的explict模块.
编辑:更具体,这里有一个例子脚本转换,从而,jackson-core
,jackson-annotations
,和jackson-databind
传统的罐子模块化罐子.
这个想法是:
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
Run Code Online (Sandbox Code Playgroud)