当我在 Windows 10 下运行以下命令时,我得到一个 EXE 文件:
jpackage --win-console --module mymodule --module-path main.jar --module-path other-dependencies/ --app-version 1.0.0
我希望能够将 EXE 作为命令行应用程序运行,但运行 EXE 似乎是在“开始”菜单中安装应用程序,并且它似乎作为 GUI 应用程序执行(立即退出,从不输出到标准输出)。
我是否应该能够使用
jpackage
创建一个像 Windows 下的控制台应用程序一样执行的本机二进制文件?还是我误解了--win-console
是什么意思?
我发现的唯一讨论是关于 JDK-8253461 但我不明白 Andy Herrick 的意思。为什么非控制台应用程序需要访问标准输入/标准输出?
我是否应该能够使用 jpackage 创建一个像 Windows 下的控制台应用程序一样执行的本机二进制文件?
是的,但不是作为一个独立的可执行文件。
默认情况下
jpacakge
生成安装程序(Windows 上的 .exe 文件)。您可以使用 --type msi
生成 .msi 安装程序,或使用 --type app-image
创建可以压缩和分发的应用程序映像。应用程序映像包含本机二进制文件。
例如,如果我使用以下 jpackage 命令:
jpackage --win-console --module mymodule --module-path mymodule.jar --type app-image --name myapp
jpackage
创建一个 myapp
文件夹,其中包含一个 myapp.exe
可以作为控制台应用程序运行:
> .\myapp\myapp.exe
Hello world!
--win-console 意味着当你运行你的应用程序时它会打开一个终端。您可以使用它从 cmd 运行可执行文件并检查输出以进行调试。一旦应用程序正常,您可以删除该选项并重新构建它,这样它就不再打开终端,而只会打开您的应用程序。