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

如何运行JDK 9 jlink生成的图像?

闻人嘉木
2023-03-14

我在这里遵循拼图快速入门。我成功运行了给定的jlink命令:

jlink --module-path $JAVA_HOME/jmods:mlib --add-modules com.greetings --output greetingsapp

这将生成一个“运行时映像”,它是一个分解的目录结构,如下所示:

~ tree -d greetingsapp
greetingsapp
├── bin
├── conf
│   └── security
│       └── policy
│           ├── limited
│           └── unlimited
├── include
│   └── darwin
├── legal
│   └── java.base
└── lib
    ├── jli
    ├── security
    └── server

如何运行此功能?我期望的是一个二进制可执行文件,而不是分解的目录树。

bin目录有一个java和一个keytool。我什么也没看到。jar文件或。类文件以通过捆绑的java可执行文件运行。

共有1个答案

梁研
2023-03-14

要运行,请执行以下操作:

greetingsapp/bin/java -m com.greetings/com.greetings.Main 

或者,您可以让jlink构建一个执行此操作的启动器脚本

jlink --module-path $JAVA_HOME/jmods:mlib --add-modules com.greetings --output greetingsapp --launcher launch=com.greetings/com.greetings.Main

然后运行:

greetingsapp/bin/launcher

形成相同的留档:-

$ java -p mods -m com.greetings/com.greetings.Main

可以执行以从模块结构运行主类,而无需使用jshell链接。

此外,jlink是链接器工具,可用于链接一组模块及其传递依赖项,以创建称为Modular Runtime Images的自定义模块化运行时映像,这可以使用Java9个模块引入的JMOD工具来完成。正如评论中指出并由@Jorn回答的,如果您只是打算执行主类。

您可以使用生成图像的bin文件夹中的java二进制文件并使用以下命令来运行应用程序:

java com.greetings.Main

另一方面,创建JMOD文件用作模块的示例进一步如下:

jmod create --class-path mods/com.greetings --cmds commands
  --config configfiles --header-files src/h --libs lib
  --main-class com.greetings.Main --man-pages man --module-version 1.0
  --os-arch "x86_x64" --os-name "Mac OS X"
  --os-version "10.10.5" greetingsmod 

编辑:展开澄清,以获得我正在寻找的答案。

 类似资料:
  • 问题内容: Docker noob在这里… 如何在命令行中正确运行Visual Studio 2017生成的Asp.Net CORE应用程序的docker映像? 似乎无法正常工作(图像运行,但是我无法浏览至我的应用程序) 注意:我只是使用默认模板在Studio中创建了一个示例ASP.Net Core Web App,并添加了Docker支持(通过单击“添加Docker支持”复选框)。执行此操作时,

  • 问题内容: 假设我有一台Koa Web服务器,其端点如下所示: 现在,在所有动作都明显执行之后,客户端将获得响应。但事情是每个动作都取决于前一个动作的完成。 有没有办法并行执行它们? 注意:除非我能以某种方式返回结果而不是resolve(),否则将它们变为Promises是不可行的。 问题答案: 将生成器功能转换为Promises,并异步执行它们。等待他们全部完成:

  • 我做了一个简单的项目,其中包含一些测试,我希望能够在其他计算机上启动测试。我使用runas构建了这个项目- 错误:在com类中找不到Main方法。实例TestPurchase,请将main方法定义为:publicstaticvoidmain(String[]args)或JavaFX应用程序类必须扩展JavaFX。应用应用 据我所知,TestNG不需要任何主方法,因为有注释。这就引出了一些问题: 我

  • 问题内容: 我正在尝试使一个Maven托管项目在命令行上运行。 我在pom.xml中有一组依赖关系,这些依赖关系随后被下载并安装在〜/ .m2 / repository /中。我在pom中包含了必要的配置,以将类路径添加到jar清单中。 现在的问题是我试图这样运行jar:java -jar project-SNAPSHOT.jar。 Java找不到下载的依赖项(我想是因为列出的依赖项在清单中没有路

  • 我需要为我的项目生成序列图。 我已经创建了类、具有适当签名的方法、从一个类到另一个类的方法调用等,但是,由于逻辑还没有实现,我无法真正运行web应用程序来通过跟踪获得序列图。 语言:Java IDE:Eclipse