2011-12-14 30 views
5

用户希望从Windows启动Java GUI应用程序,并带有一定量的其他JVM参数。
例如:如何方便地为最终用户启动Java GUI程序

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

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

是否存在被启动Java GUI应用程序简单方式双击该批处理文件(或符合上述要求的其他一些文件),而无需打开CMD窗口?

+0

使用Windows快捷键 – chance 2011-12-14 13:05:29

+0

@chance差的建议。你还没有理解我的问题。 – MockerTim 2011-12-14 13:10:39

+0

如果双击javaw的快捷方式,它不会在没有cmd窗口的情况下启动GUI吗?或者不可能为客户创建shorcut? – chance 2011-12-14 13:25:31

回答

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文件。
3

尝试

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做同样的事情。

3

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

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

..from的Windows ..

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

相关问题