【发布时间】:2017-10-23 04:46:41
【问题描述】:
我正在使用 javapackager 捆绑一个应用程序,其中主 jar 是一个带有 module-info.class 的模块,但它依赖于许多其他普通的旧 jar jar,所以我将它们称为模块中的自动模块-信息.java。但是,javapackager 抱怨找不到它们。如何让它找到自动模块的 jar 文件?
Exception: jdk.tools.jlink.plugin.PluginException: java.lang.module.FindException: Module rcf not found, required by com.username.commander.ui
Exception in thread "main" com.sun.javafx.tools.packager.PackagerException: Error: Bundler "Mac Application Image" (mac.app) failed to produce a bundle.
at jdk.packager/com.sun.javafx.tools.packager.PackagerLib.generateNativeBundles(PackagerLib.java:374)
at jdk.packager/com.sun.javafx.tools.packager.PackagerLib.generateDeploymentPackages(PackagerLib.java:348)
at jdk.packager/com.sun.javafx.tools.packager.Main.main(Main.java:496)
我尝试指定模块路径(第一个目录只有主模块 jar,第二个目录有所有非模块 jar):
/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/bin/javapackager -deploy -native image \
-name Commander -title Commander -vendor "username" \
--module-path /Users/username/Dropbox/coding/commander/Commander-java/moduleJars:/Users/username/Dropbox/coding/commander/Commander-java/packageJars \
--module com.username.commander.ui/com.username.commander.ui.AppWindow \
-srcdir /Users/username/Dropbox/coding/commander/Commander-java/packageJars \
-outdir /Users/username/Dropbox/coding/commander/Commander-java/target \
-outfile Commander \
-Bruntime=target/jre-9.0.1 -Bicon=src/main/resources/icons/commander.icns \
-BappVersion=1.0 \
-Bmac.CFBundleIdentifier=com.username.Commander \
--add-modules java.base,java.desktop,java.naming,java.sql,java.xml,java.logging,java.management,java.scripting,java.compiler,java.rmi,java.activation \
--limit-modules java.base,java.desktop,java.naming,java.sql,java.xml,java.logging,java.management,java.scripting,java.compiler,java.rmi,java.activation \
-nosign -v
【问题讨论】:
-
请使用完整的命令进行更新。另外,每个目录都是模块的目录。你的情况是这样吗?
-
嗯,第二个目录有非模块罐子,但这是我的问题的一部分,对吧?我试图让它找到严格意义上实际上是非模块 jar 的自动模块。我知道
-p需要一个模块目录。这包括自动模块吗? -
理想情况下,人们会期望自动模块成为模块图的一部分,而无需您在模块路径参数中明确指定它。这样,模块化Jars 将具有包含自动模块并为它们增加可读性的声明。
-
是的,我也预料到了。我的主模块 jar 对那些必要的非模块 jar 有明确的
requires语句,但javapackager没有找到它们。
标签: java java-9 javapackager