Class Launcher
java.lang.Object
net.sourceforge.jnlp.Launcher
Launches JNLPFiles either in the foreground or background.
An optional LaunchHandler can be specified that is notified of warning and error condition while launching and that indicates whether a launch may proceed after a warning has occurred. If specified, the LaunchHandler is notified regardless of whether the file is launched in the foreground or background.
- Version:
- $Revision: 1.22 $
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate classThis runnable is used to call the appropriate launch method for the application, applet, or installer in its thread group. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final LaunchHandlerthe handlerprivate static final Loggerprivate static final ThreadGroupshared thread groupprivate ParserSettingsprivate final UpdatePolicythe update policy -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voidaddArguments(JNLPFile file, List<String> args) Add the arguments to the JNLP file; only call if file is actually an application (not installer).private voidaddParameters(JNLPFile file, List<String> params) Add the params to the JNLP file; only call if file is actually an applet file.private voidaddProperties(JNLPFile file, List<String> props) Add the properties to the JNLP file.private AppletInstancecreateApplet(JNLPFile file, Container cont) Create an AppletInstance.private ApplicationInstancecreateApplication(JNLPFile file) Creates an Application.private ThreadGroupcreateThreadGroup(JNLPFile file) Create a thread group for the JNLP file.private static voidDo hacks on per-application level to allow different AppContexts to work see JNLPRuntime#doMainAppContextHacksprivate JNLPFileReturns the JNLPFile for the URL, with error handling.Launches a JNLP file by calling the launch method for the appropriate file type.Launches a JNLP file by calling the launch method for the appropriate file type.Launches a JNLP file inside the given container if it is an applet.private ApplicationInstancelaunchApplet(JNLPFile file, Container cont) Launches a JNLP applet.private ApplicationInstancelaunchApplication(JNLPFile file) Launches a JNLP application.private LaunchExceptionSend n launch error to the handler, if set, and also to the caller.private voidlaunchExternal(JNLPFile file, List<String> javawsArgs) Launches the JNLP file at the specified location in a new JVM instance.private ApplicationInstancelaunchInstaller(JNLPFile file) Launches a JNLP installer.private voidMerges extra information into the jnlp fileprivate voidsetContextClassLoaderForAllThreads(ThreadGroup tg, ClassLoader classLoader) Set the classloader as the context classloader for all threads in the given threadgroup.voidsetInformationToMerge(Map<String, List<String>> input) Set a map to use when trying to extract extra information, including arguments, properties and parameters, to be merged into the main JNLPvoidsetParserSettings(ParserSettings settings)
-
Field Details
-
LOG
-
mainGroup
shared thread group -
handler
the handler -
updatePolicy
the update policy -
parserSettings
-
extra
-
-
Constructor Details
-
Launcher
public Launcher()
-
-
Method Details
-
setParserSettings
- Parameters:
settings- the parser settings to use when the Launcher initiates parsing of a JNLP file.
-
setInformationToMerge
Set a map to use when trying to extract extra information, including arguments, properties and parameters, to be merged into the main JNLP- Parameters:
input- a map containing extra information to add to the main JNLP. the values for keys "arguments", "parameters", and "properties" are used.
-
launch
Launches a JNLP file by calling the launch method for the appropriate file type. The application will be started in a new window.- Parameters:
file- the JNLP file to launch- Returns:
- the application instance
- Throws:
LaunchException- if an error occurred while launching (also sent to handler)
-
launch
Launches a JNLP file inside the given container if it is an applet. Specifying a container has no effect for Applications and Installers.- Parameters:
file- the JNLP file to launchcont- the container in which to place the application, if it is an applet- Returns:
- the application instance
- Throws:
LaunchException- if an error occurred while launching (also sent to handler)
-
launch
Launches a JNLP file by calling the launch method for the appropriate file type.- Parameters:
location- the URL of the JNLP file to launch location to get the pristine version- Returns:
- the application instance
- Throws:
LaunchException- if there was an exception
-
mergeExtraInformation
private void mergeExtraInformation(JNLPFile file, Map<String, List<String>> extra) throws LaunchException Merges extra information into the jnlp file- Parameters:
file- the JNLPFileextra- extra information to merge into the JNLP file- Throws:
LaunchException- if an exception occurs while extracting extra information
-
addProperties
Add the properties to the JNLP file.- Throws:
LaunchException- if an exception occurs while extracting extra information
-
addParameters
Add the params to the JNLP file; only call if file is actually an applet file.- Throws:
LaunchException- if an exception occurs while extracting extra information
-
addArguments
-
launchExternal
Launches the JNLP file at the specified location in a new JVM instance. All streams are properly redirected.- Parameters:
file- the JNLP file to read arguments and JVM details fromjavawsArgs- the arguments to pass to javaws (aka Netx)- Throws:
LaunchException- if there was an exception
-
fromUrl
Returns the JNLPFile for the URL, with error handling.- Throws:
LaunchException
-
launchApplication
Launches a JNLP application. This method should be called from a thread in the application's thread group.- Parameters:
file- jnlpfile - source of application- Returns:
- application to be launched
- Throws:
LaunchException- if launch fails on unrecoverable exception
-
setContextClassLoaderForAllThreads
Set the classloader as the context classloader for all threads in the given threadgroup. This is required to make some applications work. For example, an application that provides a custom Swing LnF may ask the swing thread to load resources from their JNLP, which would only work if the Swing thread knows about the JNLPClassLoader.- Parameters:
tg- The threadgroup for which the context classloader should be setclassLoader- the classloader to set as the context classloader
-
launchApplet
Launches a JNLP applet. This method should be called from a thread in the application's thread group.The enableCodeBase parameter adds the applet's codebase to the locations searched for resources and classes. This can slow down the applet loading but allows browser-style applets that don't use JAR files exclusively to be run from a applet JNLP file. If the applet JNLP file does not specify any resources then the code base will be enabled regardless of the specified value.
- Parameters:
file- the JNLP filecont- container where to put application- Returns:
- application
- Throws:
LaunchException- if deploy unrecoverably die
-
launchInstaller
Launches a JNLP installer. This method should be called from a thread in the application's thread group.- Parameters:
file- jnlp file to read installer from- Returns:
- application
- Throws:
LaunchException- if deploy unrecoverably die
-
createApplet
Create an AppletInstance.- Parameters:
file- the JNLP filecont- container where to put applet- Returns:
- applet
- Throws:
LaunchException- if deploy unrecoverably die
-
createApplication
Creates an Application.- Parameters:
file- the JNLP file- Returns:
- application
- Throws:
LaunchException- if deploy unrecoverably die
-
createThreadGroup
Create a thread group for the JNLP file.- Parameters:
file- the JNLP file- Returns:
- ThreadGroup for this app/applet
-
launchError
Send n launch error to the handler, if set, and also to the caller. -
doPerApplicationAppContextHacks
private static void doPerApplicationAppContextHacks()Do hacks on per-application level to allow different AppContexts to work see JNLPRuntime#doMainAppContextHacks
-