我是 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
错误:无法找到或加载主类 moduleTCD.com.adonax.tanpura.TCDLaunch 原因:java.lang.NoClassDefFoundError: com/adonax/tanpura/TCDLaunch(错误名称:moduleTCD/com/adonax/tanpura/TCDLaunch)
用于制作 jar 的命令:
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 中的清单显示:
Main-Class: moduleTCD/com.adonax.tanpura.TCDLaunch
到目前为止我为解决这个问题所做的尝试:
我无法从文档中判断我是否正确指定了 -appclass 参数。文档定义 -appclass 如下:“要执行的应用程序类的限定名称。” 但我没有看到任何迹象表明“合格”是什么意思。我尝试了几个看似合理的不同名称。我使用的模块名称的表格是否正确?
我创建了第二个“已编译”目录,在该目录中只是从项目中省略了该模块,并使用我的 -srcdir 重试了该命令。在这种情况下,生成的 jar 文件可以正常工作。
我验证了我可以使用已编译的源代码(来自“已编译”文件夹)从命令行运行程序:
爪哇-p。-m 模块TCD/com.adonax.tanpura.TCDLaunch
有什么想法吗?为了制作一个独立的 exe 包(主要目标),如果我正确阅读文档,我需要一个基于模块的 jar 文件。