Class Launcher

java.lang.Object
net.sourceforge.jnlp.Launcher

public class Launcher extends Object
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 $
  • Field Details

  • Constructor Details

    • Launcher

      public Launcher()
  • Method Details

    • setParserSettings

      public void setParserSettings(ParserSettings settings)
      Parameters:
      settings - the parser settings to use when the Launcher initiates parsing of a JNLP file.
    • setInformationToMerge

      public void setInformationToMerge(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 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

      public ApplicationInstance launch(JNLPFile file) throws LaunchException
      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

      public ApplicationInstance launch(JNLPFile file, Container cont) throws LaunchException
      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 launch
      cont - 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

      public ApplicationInstance launch(URL location) throws LaunchException
      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 JNLPFile
      extra - extra information to merge into the JNLP file
      Throws:
      LaunchException - if an exception occurs while extracting extra information
    • addProperties

      private void addProperties(JNLPFile file, List<String> props) throws LaunchException
      Add the properties to the JNLP file.
      Throws:
      LaunchException - if an exception occurs while extracting extra information
    • addParameters

      private void addParameters(JNLPFile file, List<String> params) throws LaunchException
      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

      private void addArguments(JNLPFile file, List<String> args)
      Add the arguments to the JNLP file; only call if file is actually an application (not installer).
    • launchExternal

      private void launchExternal(JNLPFile file, List<String> javawsArgs) throws LaunchException
      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 from
      javawsArgs - the arguments to pass to javaws (aka Netx)
      Throws:
      LaunchException - if there was an exception
    • fromUrl

      private JNLPFile fromUrl(URL location) throws LaunchException
      Returns the JNLPFile for the URL, with error handling.
      Throws:
      LaunchException
    • launchApplication

      private ApplicationInstance launchApplication(JNLPFile file) throws LaunchException
      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

      private void setContextClassLoaderForAllThreads(ThreadGroup tg, ClassLoader classLoader)
      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 set
      classLoader - the classloader to set as the context classloader
    • launchApplet

      private ApplicationInstance launchApplet(JNLPFile file, Container cont) throws LaunchException
      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 file
      cont - container where to put application
      Returns:
      application
      Throws:
      LaunchException - if deploy unrecoverably die
    • launchInstaller

      private ApplicationInstance launchInstaller(JNLPFile file) throws LaunchException
      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

      private AppletInstance createApplet(JNLPFile file, Container cont) throws LaunchException
      Create an AppletInstance.
      Parameters:
      file - the JNLP file
      cont - container where to put applet
      Returns:
      applet
      Throws:
      LaunchException - if deploy unrecoverably die
    • createApplication

      private ApplicationInstance createApplication(JNLPFile file) throws LaunchException
      Creates an Application.
      Parameters:
      file - the JNLP file
      Returns:
      application
      Throws:
      LaunchException - if deploy unrecoverably die
    • createThreadGroup

      private ThreadGroup createThreadGroup(JNLPFile file)
      Create a thread group for the JNLP file.
      Parameters:
      file - the JNLP file
      Returns:
      ThreadGroup for this app/applet
    • launchError

      private LaunchException launchError(LaunchException ex)
      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