Java模块-添加模块,但不是从它的一切?



我有一个简单的Spring Boot应用程序,在这里描述

Java模块-简单的Spring启动应用程序,创建自定义运行时

不是模块化的应用程序(没有module-info.java)。

正如在那篇文章中所描述的,当创建一个自定义运行时映像时,为了使这个简单的应用程序运行,我必须添加java.desktop模块。

jlink --module-path $JAVA_HOME/jmods --add-modules java.desktop --output mycustomrt

当添加一个模块时,必须总是添加整个模块,还是可以进一步减少到只需要/使用的包(工件)?

当然,在给定的命令中,没有直接关联到我的简单应用程序,因此包含整个java.desktop模块是合乎逻辑的,它也是可传递的声明模块。

但是在

查看文档https://docs.oracle.com/en/java/javase/19/docs/api/java.desktop/module-summary.html

我看到了,java.desktop包含了很多我的简单应用程序不需要的包

exports java.applet
exports java.awt
exports java.awt.color
exports java.awt.desktop
exports java.awt.dnd
exports java.awt.event
exports java.awt.font
exports java.awt.geom
exports java.awt.im
exports java.awt.im.spi
exports java.awt.image
exports java.awt.image.renderable
exports java.awt.print
exports java.beans
exports java.beans.beancontext
exports javax.accessibility
exports javax.imageio
exports javax.imageio.event
exports javax.imageio.metadata
exports javax.imageio.plugins.bmp
exports javax.imageio.plugins.jpeg
exports javax.imageio.plugins.tiff
exports javax.imageio.spi
exports javax.imageio.stream
exports javax.print
exports javax.print.attribute
exports javax.print.attribute.standard
exports javax.print.event
exports javax.sound.midi
exports javax.sound.midi.spi
exports javax.sound.sampled
exports javax.sound.sampled.spi
exports javax.swing
exports javax.swing.border
exports javax.swing.colorchooser
exports javax.swing.event
exports javax.swing.filechooser
exports javax.swing.plaf
exports javax.swing.plaf.basic
exports javax.swing.plaf.metal
exports javax.swing.plaf.multi
exports javax.swing.plaf.nimbus
exports javax.swing.plaf.synth
exports javax.swing.table
exports javax.swing.text
exports javax.swing.text.html
exports javax.swing.text.html.parser
exports javax.swing.text.rtf
exports javax.swing.tree
exports javax.swing.undo

Applet,AWT,Swing,还有一些关于声音的东西,绝对不需要。

可以,只有整个模块可以添加requires子句。这对于交付模块系统提供的可靠配置是必要的。如果您能够随意排除一些包,那么您可能会在运行时报告丢失类的错误,因为这些包实际上是需要的。

如果你想进一步调整图像的大小,你可以查看GraalVM提供的提前编译,它有一个"摇树"功能。