Execute a class from Windows Explorer (this howto is deprecated)Tag(s): DEPRECATED
This HowTo will you show how to start a class (with a main() method) without opening a DOS Shell or using a JAR file directly from Windows Explorer.
Type the following VBScript using a text editor and save it as WRunJava.vbs.
You need to save the script in the SendTo subdirectory located in the Windows directory
On a Win98 system, it's C:\Windows\SendTo.
On XP, go to Documents and Settings folder then select the folder of a specific user, eg. c:\documents and settings\'user name'\SendTo.
NOTE The SendTo folder is hidden by default. If it is not visible, on the Tools menu, click Folder Options. On the View tab, click Show hidden files and folders. SO you save the scripts shown below, into the SendTo folder.
Then in Window Explorer, locate a class file that can be executed (with a main() method). Right click on it, select the Send To menu and you should see an entry called WRunJava.vbs. Simply select it and the class should be launched via javaw.exe .
' [WRunJava.vbs] start a java class without a console
Dim WSHShell, FSO, javaclass, javacompletepath, cmdline
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
If WScript.Arguments.Count = 0 Then
WScript.Echo "no argument on the command line."
Else
javaclass = WScript.Arguments(0)
If fso.GetExtensionName(javaclass) = "class" Then
javacompletepath = fso.GetAbsolutePathName(javaclass)
javapath = fso.GetParentFolderName(javacompletepath)
javaclass = fso.GetBaseName(javaclass)
cmdline = "javaw.exe -cp " & javapath & " " & javaclass
WSHShell.Run cmdline, 1, false
ElseIf fso.GetExtensionName(javaclass) = "jar" Then
javacompletepath = fso.GetAbsolutePathName(javaclass)
cmdline = javaclass
WSHShell.Run cmdline, 1, false
Else
WScript.Echo "Not a java class! (" & javaclass & ")"
End if
End If
Set WSHShell = Nothing
Set FSO = Nothing
WScript.Quit(0)
You need a second script to launch a java class with a console (useful to see debugging traces or text-only Java program). Called it CRunJava.vbs . Then you will have two choices from the SendTo menu, one for console-based program and one for GUI-based (Windows) program.
' [CRunJava.vbs] start a java class with a console
Dim WSHShell, FSO, javaclass, javacompletepath, cmdline
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
If WScript.Arguments.Count = 0 Then
WScript.Echo "no argument on the command line."
Else
javaclass = WScript.Arguments(0)
If fso.GetExtensionName(javaclass) = "class" Then
javacompletepath = fso.GetAbsolutePathName(javaclass)
javapath = fso.GetParentFolderName(javacompletepath)
javaclass = fso.GetBaseName(javaclass)
' keep the console open
cmdline = "cmd /k java.exe -cp " & javapath & " " & javaclass
' close the console
' cmdline = "cmd /c java.exe -cp " & javapath & " " & javaclass
WSHShell.Run cmdline, 1, false
ElseIf fso.GetExtensionName(javaclass) = "jar" Then
javacompletepath = fso.GetAbsolutePathName(javaclass)
cmdline = "java.exe -jar " & javaclass
WSHShell.Run cmdline, 1, false
Else
WScript.Echo "Not a java class! (" & javaclass & ")"
End if
End If
Set WSHShell = Nothing
Set FSO = Nothing
'WScript.Quit(0)
Send comment, question or suggestion to howto@rgagnon.com