【问题标题】:executable created with "jpackage"silently fails if jar is missing如果缺少 jar,使用“jpackage”创建的可执行文件会静默失败
【发布时间】:2020-10-31 03:35:27
【问题描述】:

我们已经用 jpackage 打包了我们的应用程序,它运行良好。

不知何故,有人无意中从安装目录中删除了主 jar。从那以后,“.exe”无法启动(显然)。问题是它没有显示任何类型的错误消息,所以我们花了一段时间才意识到出了什么问题。

有没有办法让 exe 至少显示一些有用的错误信息?

【问题讨论】:

    标签: java jpackage


    【解决方案1】:

    如果您使用jpackage --win-console 参数激活控制台,jpackage 生成的 EXE 的问题会更容易诊断。

    您可能不想对主应用程序 EXE 执行此操作,因此您可以使用启用控制台和相同主类的第二个启动器分发您的应用程序。只需创建一个新文件appwithconsole.properties 并使用:

    jpackage --add-launcher debugversion=appwithconsole.properties ... rest of command line.
    

    appwithconsole.properties

    main-class=as.used.in.command.line
    win-console=true
    

    那么删除jar后试试debugversion.exe,应该比不带控制台的EXE报错更清楚:

    Error: Could not find or load main class ...
    

    【讨论】:

    • 我们确实不希望主 exe 使用控制台选项,但总而言之,拥有第二个 exe 来诊断问题是一个相当优雅的解决方案,并且可能是目前唯一真正的解决方案。谢谢
    • 注意--add-launcher在JDK15 jpackage中不起作用,但在JDK14或16EA中可以
    • --add-launcher 在 Java 15 中被破坏是否有更官方的来源?我正在经历这种情况,而这条评论是我能找到的唯一可以确认我没有疯的东西。
    • 是的,它被归档为 [bugs.openjdk.java.net/browse/JDK-8253426]。如果不想完全升级或降级,你应该可以使用来自 JDK14 或 16EA 的 jpackage 和你的 JDK15 构建文件,并且很快就会有适当的 JDK16。
    猜你喜欢
    • 2018-07-24
    • 1970-01-01
    • 2016-05-28
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 2013-12-26
    相关资源
    最近更新 更多