我好几次遇到这个问题.如果我将Java应用程序打包在一个可接受用户参数的可执行jar文件中,那么用户必须通过以下命令从命令提示符调用该程序(jar文件):
java -jar "jar-file-name.jar"
但是我希望每当用户双击可执行jar文件(需要来自用户的参数)时,如果我们从命令提示符调用了jar文件,就会出现一个窗口(命令提示符窗口).
我知道一个解决方案是使用批处理文件.bat来运行jar文件.还有其他解决方案吗?
解释原因:
有2个java JVM exe发射器:
默认情况下,JAR文件扩展名与javaw.exe相关联,这就是双击它们时无法获得控制台的原因.
其他人给出的答案,并添加了我自己的答案:
重写您的应用程序,以便它使用Java GUI项进行输入和输出而不是System.in/System.out.根据您的需要,这可能过于复杂.
您提到创建批处理文件以便运行基于控制台的Java JVM(java.exe),您还可以创建指定命令行的Windows快捷方式: java -jar  jar-file-name.jar
您可以更改.jar的Windows文件关联(但通常这是一个坏主意 - 新的Java安装可能会重置此设置,这将意味着从jar运行的所有Java应用程序都将具有控制台)
您可以使用像WinRun4J这样的Java启动程序,它允许您简单地删除带有图标和配置文件的双击EXE,该文件指定应如何运行应用程序(使用/不使用控制台,以及使用任何其他JVM和命令行参数)
我亲自去了项目的最后一个选项 - 我的jar文件不可执行,用户必须双击EXE.它还允许我为我的项目指定一个漂亮的图标,并通过使用不同的exe/config文件提供启动(调试/非调试模式)的多个选项.