调试jpackage更简单的方法是什么?



我在使用jpackage时遇到了一个非常罕见的问题,在这里就不分享了。我觉得消除这个bug的唯一方法就是调试jpackage工具的代码。我看到它的代码是纯Java的,我想知道是否有一种简单的方法可以看到失败的代码一步步运行

我是一个经验丰富的java程序员,我知道如何使用调试器,但我无法从java启动jpackage(似乎主类包没有从其模块导出)。我认为编译完整的JDK对我来说太难了(因为它是本机代码),而且这可能不是到达代码的Java部分的方法

这就是为什么我在这里找你帮忙。有别的办法吗?

我根本无法独自完成,而且情况非常令人沮丧,因为我已经编写了几个星期的解决方案,现在由于这个bug,我没有任何东西可以交付。我也没有时间把bug归档(很难知道这是JDK还是Wix的bug,我需要在一周内完成我的工作)

在理想的情况下,应该可以在调试模式下运行jpackage.exe并为其附加远程调试器,但听起来现实有点困难

提前谢谢你

你可以通过ToolProvider API调用jpackage:

static final ToolProvider JPACKAGE = ToolProvider.findFirst("jpackage").orElseThrow();
public static void main(String[] args) {
JPACKAGE.run(System.out, System.err, "--help"); // put actual options here
}

然后您可以从IDE或其他调试器调试此应用程序,并从那里进入jpackage代码。

这可以工作,因为在这种情况下,jpackage运行在与调用它的程序相同的进程中。


如果一个wix命令失败并有特定的退出码,您也可以重新运行带有--temp选项的jpackage,将所有的临时文件输出到固定的目录中,然后直接从异常消息中重新运行失败的wix命令。


另一个可以帮助的选项是--verbose选项,它使jpackage输出更多信息。

最新更新