如何方便地为最终用户启动Java GUI程序

用户希望从Windows启动Java GUI应用程序,并使用一些额外的JVM参数。
例如:

javaw -Djava.util.logging.config.file=logging.properties -jar MyGUI.jar 

如果我将以上行添加到batch file,用户可以双击batch file名称。
而且很酷。 但有一个恼人的副作用: batch file在启动GUI之前打开cmd窗口

有没有一种简单的方法来启动Java GUI应用程序通过双击batch file(或其他适合上述需要的文件)而无需打开cmd窗口?

Solutions Collecting From Web of "如何方便地为最终用户启动Java GUI程序"

我看到了很多方法:

  • 使用由Launch4J (感谢CodeBrickie提示)或Install4J / Exe4J生成的启动器。 Launch4J允许你通过创建一个与exe相同的.l4j.ini文件来调整参数。 在Exe4J的情况下,可以在.vmoptions文件中指定额外的参数,该文件将放在生成的exe旁边。
  • 创建一个快捷方式到javaw.exe,给它所需的图标,设置“开始”字段到应用程序的目录,并指定您的参数到目标字段中的javaw。
  • 制作一个启动javaw的VB脚本。 如果VBS运行时设置为使用wscript ,则不会弹出控制台窗口。
  • 如果您使用Java Web Start,则可能需要让用户使用参数调整Java Webstart中指定的JNLP文件。

用户想要启动Java GUI应用程序

最终用户的最佳用户体验将通过启动应用程序提供。 使用Java Web Start 。 JWS可以安装桌面快捷方式和菜单项来启动应用程序。

..从Windows ..

JWS也适用于OS X和* nix。

尝试

 start javaw -Djava.util.logging.config.file=logging.properties -jar MyGUI.jar 

您也可以使用脚本 :

VBS:

 Const HIDDEN_WINDOW = 12 strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set objStartup = objWMIService.Get("Win32_ProcessStartup") Set objConfig = objStartup.SpawnInstance_ objConfig.ShowWindow = HIDDEN_WINDOW Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process") errReturn = objProcess.Create("Notepad.exe", null, objConfig, intProcessID) 

JScript的:

 var WindowStyle_Hidden = 0 var objShell = WScript.CreateObject("WScript.Shell") var result = objShell.Run("cmd.exe /c abc.bat", WindowStyle_Hidden) 

最后,还有一些可以用来隐藏窗口的通用工具,比如CMDOW和Hidden Start($ 20) 。 我自己也没有用过,因为start是一样的。

Lauch4j可以将你的jar包装在一个exe文件中。