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

时间:2011-12-14 13:03:41

标签: java windows user-interface deployment cmd

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

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

如果我将上述行添加到批处理文件中,则用户可以双击批处理文件名 而且很酷。但是有一个恼人的副作用:批处理文件在启动GUI之前打开 cmd 窗口

是否有简单方法通过双击批处理文件(或其他适合上述需求的文件)启动java GUI应用程序而无需打开 cmd 窗口?

4 个答案:

答案 0 :(得分:6)

我看到了很多方法:

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

答案 1 :(得分:4)

尝试

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

您还可以使用scripting

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)

最后,您可以使用通用实用程序来隐藏窗口,例如CMDOWHidden Start ($20)。我没有使用过我自己,因为start做了同样的事情。

答案 2 :(得分:3)

  

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

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

  

..来自Windows ..

JWS也适用于OS X& * nix中。

答案 3 :(得分:2)

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