首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java9: JLink创建了无效图像-缺少模块可执行脚本

Java9: JLink创建了无效图像-缺少模块可执行脚本
EN

Stack Overflow用户
提问于 2017-05-20 11:34:12
回答 1查看 1.9K关注 0票数 7

我正在创建一个包含3个模块( userdeptaccount )的示例应用程序。在我的用户模块中,我有一个main类,并使用以下命令编译我的模块:

代码语言:javascript
复制
javac -d target --module-source-path src $(find -name "*.java")

编译后,执行以下命令以运行:

代码语言:javascript
复制
java -p target -m com.user/com.user.info.Launcher

运行java模块后的输出是成功的。但是当试图使用jlink创建运行时映像时,成功地创建了映像,但是模块可执行脚本并不存在。为了创建图像,我使用以下命令:

代码语言:javascript
复制
jlink --module-path $JAVA_HOME/jmods:target --add-modules com.user --output my-app

在运行时映像中,我有bin目录,但是这个目录只包含javakeynote脚本。我也期待用户主类脚本来执行我的应用程序。

我的Java版本如下:

代码语言:javascript
复制
java version "9-ea"
Java(TM) SE Runtime Environment (build 9-ea+165)
Java HotSpot(TM) 64-Bit Server VM (build 9-ea+165, mixed mode)

我如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-20 12:37:40

jlink创建一个运行时VM映像,其中只包含所需的模块。

由于您指定了--add-modules com.user,映像将包括com.user模块,并且它所依赖的所有模块(直接或间接)都是依赖的。

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

代码语言:javascript
复制
java com.user.info.Launcher

您还可以让jlink使用--launcher <command>=<module>/<main>选项生成一个启动脚本。在您的情况下,您可以这样做:

代码语言:javascript
复制
jlink --module-path $JAVA_HOME/jmods:target --add-modules com.user --output my-app --launcher launch=com.user/com.user.info.Launcher

在此之后,您只需使用来自bin目录的bin来运行应用程序。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44085367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档