当前位置: 首页 > 知识库问答 >
问题:

创建专用于特定模块化应用程序的自定义运行时映像

黄元章
2023-03-14

假设我正在开发一个由两个模块组成的模块化应用程序:com.spacey.explorer依赖于com.spacey.Rocket模块。我在bin目录中有它们的模块化JAR文件。

并且我想准备轻量级JRE来运行它。所以很明显,我使用jlink工具:

$ jlink --module-path /opt/jdk-9/jmods:../bin --add-modules com.spacey.explorer --output ~/custom-jre3
$ java --list-modules 
com.spacey.explorer
com.spacey.rocket
java.base@9
$ jlink --module-path /opt/jdk-9/jmods --add-modules java.base --output ~/custom-jre3

共有1个答案

步弘和
2023-03-14

您可以使用jdeps工具。可能有所帮助的选择是:

jdeps --list-deps <path>

列出JDK内部API的依赖关系和使用。

其中 可以是.class文件、目录和JAR文件的路径名。

jdeps --list-deps /.m2/repository/org/apache/commons/commons-lang3/3.6/commons-lang3-3.6.jar
java.base
java.desktop
unnamed module: /.m2/repository/org/apache/commons/commons-lang3/3.6/commons-lang3-3.6.jar
jdeps --jdk-internals --class-path <path> <path>

在以后的修订中,jlink将使用相同的内容:

jlink --module-path jmods --add-modules $(jdeps --print-module-deps myapp.jar) --output image
 类似资料:
  • 我正在遵循IntelliJ IDEA 2018.2.5中的项目拼图:模块系统快速启动指南。在链接器部分之前,我在IDE中做了所有的事情。在IntelliJ idea中有没有使用jlink的方法? jlink(请参见JEP 282)是链接器工具,可用于链接一组模块及其传递依赖关系,以创建自定义模块化运行时映像(请参见JEP 220). -Project Jigsaw:Module System Qu

  • 问题内容: 我一直在寻找创建模块化Web应用程序的解决方案,该模块是模块化的,即用户可以以简单jar的形式提供自己的插件,然后将其自身的数据提供给我的Web应用程序,而我的webapp将负责用于显示它。 现在的问题是,我希望我的Web应用程序尽可能通用,而不依赖于j2ee Web容器来支持任何内容。即,我不能依靠我的Web容器来提供osgi支持并将Web应用程序作为osgi捆绑包本身部署(这确实使

  • 问题内容: 我正在编写一个Swing应用程序,该应用程序需要充当浏览器中的applet或独立应用程序,即它可以包含在JFrame或JApplet中。 在这种情况下,我想向用户显示一个自定义模式对话框(即,一个具有自定义布局和逻辑的复杂对话框,而不仅仅是简单的JOptionPane提示之一)。如果对话框是完全包含在应用程序窗口中的轻量级组件,那就很好。 同时,应用程序中将发生后台处理(网络线程,动画

  • 问题内容: 在Java中,是否可以在应用程序运行时动态创建类定义,然后创建该类的对象? 例如,正在运行的应用程序将读取一个文本文件,该文件包含要包含在新类中的类成员列表。然后,应用程序将基于成员列表定义类定义,然后使其实例化。 问题答案: 是的,这样做是有可能的,从理论上讲,您的类文件是字节代码,而字节代码最后是字节数组!然后可以使用defineClass(String,byte [],int,i

  • 问题内容: 我正在尝试创建将影响序列化值的自定义杰克逊注释。 含义: 现在序列化对象X(10)将导致: 我该如何实现? 问题答案: 结果:

  • 问题内容: 我有一个定义明确的界面的应用程序。它使用CDI解析模块(具体地说,它使用API​​接口上的Instance <>注入点来解析模块),并通过接口将各种数据传回第四个,而不会出现问题。我故意将API和实现分开,并且模块仅从API继承以避免紧密耦合,并且应用程序仅通过运行时相关性以及通过API完成的数据传递来了解模块。应用程序在没有模块的情况下运行良好,只需将jar放到WEB- INF /