我有一个 Java 应用程序(带有 main())。 我使用“-classpath .:./jars/*”来使用许可证管理器 jar 和数据库服务器 jar,它们都位于“jars”子目录中。 它编译并运行正常。 现在我想将它部署给用户。 我将两个特定的 jar 与“foo.jar”(其中包含 main())一起放入“deploy”子目录中,然后使用 jpackage:
jpackage \
--input deploy \
--main-jar "foo.jar" \
--type dmg
jpackage(在 MacOS 上)生成一个 .dmg 文件。当我双击 .dmg 并将应用程序复制到“应用程序”文件夹时,我得到:
$ ls
foo.cfg license4j-runtime-library.jar postgresql-42.7.3.jar
foo.jar
$ cat foo.cfg
[Application]
app.mainjar=$APPDIR/foo.jar
app.classpath=$APPDIR/license4j-runtime-library.jar
app.classpath=$APPDIR/postgresql-42.7.3.jar
[JavaOptions]
java-options=-Djpackage.app-version=1.0
当我双击应用程序的图标时,它似乎启动了(我可以在标题栏中看到主类的名称),但随后它就停止了。没有错误消息。它只是不起作用。
我想知道这两行“app.classpath=”是否正确。也许他们应该是一体的? 如果是这样,正确的语法是什么?
当 jpackage 制作“.msi”文件时,我还需要解决 Windows 的这个问题。
有什么想法吗?
谢谢!
我预计程序会完全启动,但几秒钟后,没有输出,它停止了。
我可以向你保证多条线很好用。我的所有 .cfg 文件看起来都很相似,并且应用程序都在运行。