【发布时间】:2018-05-08 15:16:55
【问题描述】:
我是 javapackager 和 Java 9 的新手,正在研究 javapackager 参考中的示例,第一个示例如下所示:
示例 1 - 使用 -createjar 命令
javapackager -createjar -appclass package.ClassName -srcdir classes -outdir out -outfile outjar -v Packages the contents of the classes directory to outjar.jar, sets the application class to package.ClassName.
我能够制作 jar 文件 (tcdmod.jar) 而不会出现错误消息。但是当我尝试使用普通命令执行 jar 时出现错误:
java -jar tcdmod.jar
错误:无法找到或加载主类 模块TCD.com.adonax.tanpura.TCDLaunch 引起:java.lang.NoClassDefFoundError: com/adonax/tanpura/TCDLaunch (错误名称:moduleTCD/com/adonax/tanpura/TCDLaunch)
用于制作罐子的命令:
javapackager -createjar -appclass moduleTCD/com.adonax.tanpura.TCDLaunch
-srcdir compiled -outdir outex1 -outfile tcdmod -v
编译文件夹:
compiled/moduleTCD/com/adonax/tanpura/ [compiled classes here and below]
compiled/moduleTCD/module-info.class
jar 中的 manifest 显示:
Main-Class: moduleTCD/com.adonax.tanpura.TCDLaunch
到目前为止我已经尝试过解决这个问题:
我无法从文档中判断我是否正确指定了 -appclass 参数。文档定义 -appclass 如下:“要执行的应用程序类的限定名称。”但我没有看到任何迹象表明“合格”是什么意思。我尝试了几个看似合理的不同名称。我使用的模块名称的表单是否正确?
我创建了第二个“已编译”目录,在该目录中只是从项目中省略了模块,并使用我的 -srcdir 重试了该命令。在这种情况下,生成的 jar 文件可以正常工作。
-
我验证我可以使用已编译的源代码(来自“已编译”文件夹)从命令行运行程序:
java -p 。 -m 模块TCD/com.adonax.tanpura.TCDLaunch
有什么想法吗? 为了制作一个独立的 exe 包(主要目标),如果我正确阅读文档,我需要一个基于模块的 jar 文件。
【问题讨论】:
标签: java java-9 java-module javapackager