Java - 如何通过双击jar文件来输入(main方法的)运行时参数?

Yat*_*oel 4 java

我好几次遇到这个问题.如果我将Java应用程序打包在一个可接受用户参数的可执行jar文件中,那么用户必须通过以下命令从命令提示符调用该程序(jar文件):

java -jar "jar-file-name.jar"
Run Code Online (Sandbox Code Playgroud)

但是我希望每当用户双击可执行jar文件(需要来自用户的参数)时,如果我们从命令提示符调用了jar文件,就会出现一个窗口(命令提示符窗口).

我知道一个解决方案是使用批处理文件.bat来运行jar文件.还有其他解决方案吗?

Red*_*ios 5

解释原因:

有2个java JVM exe发射器:

  • java.exe:基于控制台 - 提供控制台输入/输出.
  • javaw.exe:用于GUI应用程序 - 隐藏控制台.

默认情况下,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文件提供启动(调试/非调试模式)的多个选项.