JVM Options

If you are installing a Java application, applet, or servlet, then JExpress makes it very easy to configure your customers' systems with a JVM.

JExpress givess you complete control over the JVM. The panel is broken into sub-tabs. The main sub-tab has settings for all the platforms. The other sub-tabs cover a specific platform with a special one for Java Web Start.

All JVM options

Click on the jump point or just page down to learn more about each setting.



Set runtime classpath

The easiest way to configure your customer's classpath is to click the Automatically radio button and let JExpress configure it. When you select the Automatic option, then JExpress adds any JAR files that you include in the Files panel plus the installation directory. If you make any changes to the Files list and you want to see the effect the changes have on the Runtime classpath, then click the Reset button next to the Runtime classpath field.

If you prefer to manually configure the Runtime classpath, then click on the Manually radio button and enter the Runtime classpath for your Java application. The runtime classpath should always be relative to the installation directory. You should not include absolute pathnames in the runtime classpath.



Runtime classpath

You can only enter information into this field if you clicked the Manually radio button.

If you are manually configuring the runtime classpath, then enter the classpath your Java application needs to operate on your customer's computer relative to the installation directory. Use a period to indicate the installation directory and use semi-colons (;) to separate items. JExpress automatically converts semi-colons to the separator for the target computer.

Don't forget to include the period. This lets JExpress set the current directory in your launchers when it installs your Java app.

Also be sure to include any JAR files that you specify on the Files panel in the runtime classpath.

If you are confident that your app is only installed on Windows and you are confident that you know the location of a file is always on a particular drive, and you want to specify a drive letter on Windows, then you should specify the drive separator with a | instead of a :. For example, if you want to add c:\program files\mylib.jar to the classpath, then you'd specify it as c|\program files\mylib.jar. We do not recommend that you include a drive letter because it makes the installer Windows specific.



JVM extra switches

Enter any extra switches that the JVM needs to operate your Java app. Add a space between each switch setting.

If you have configured your Java app to show a splash screen on startup, then you must include the -splash: parameter as the first parameter in the JVM extra switches.

If you need to pass the installation directory, the Java home's directory, or the user's home as part of a JVM switch, then you can use one of the predefined variables. Use [$AppDir]/ to represent the application's installation directory, [$JavaHomeDir]/ for the Java home's directory, and [$UserHomeDir] for the user's home directory. When JExpress installs your application, it will change the variables to the appropriate information without a trailing directory separator. Case and spacing are critical for the variable names.

If your switches require that you include a forward slash (/) or a colon (:) that is not part of a pathname, then you must escape them (e.g., \/). If your switches require directory pathnames, then you can use a forward slash or a backslash (unescaped) and the installer automatically converts the file separator to the one for the host system.

Important: Please note that the way to a enter forward slash in the command arguments for a launcher is not the same as the method used for the JVM arguments. Sorry for the inconsistency, but to mantaintain backward compatibility, the 2 methods will continue to be supported.

Also, if your native installer needs to start with special JVM switches (e.g., -Xbootclasspath/p:), then you should create a custom.platform.properties file (in the appropriate platforms subdirectory) for each native platform that you build with a property called jvmExtraParameters. You must use the platform specific file and path separators in each custom.platform.properties file because these properties files are platform specific.



Parent of "platforms" directory

JExpress maintains the platform specific details about the JVM in files in the "platforms" subdirectory of each project. Usually you'll want to leave this field blank. If you have a number of projects which all share the same settings and you don't want to have to change the settings for each of those projects, then you can enter then specify a unique directory where JExpress can store the platform settings, and the matching JVM.



Platform Specific Settings for the JVM

You should adjust each platform that you'll distribute an installer on the appropriate sub-tab.

The OS tabs (e.g., Windows, MacOSX) allow you to change the following settings:

The Java Web Start tab lets you define:



Search for JVM

When you use a native installer, JExpress searches the user's system for the correct version of the JVM. If JExpress doesn't find the JVM, then it installs the one shipped with your native installer.

You can control where JExpress searches a user's system for the JVM. Or, if you prefer, you can configure your native installers that include the JVM to always installs the JVM included with your installer without searching. On Windows, JExpress defaults to searching the registry because Sun configured the JRE to use the registry to locate its libraries. On Unix, JExpress defaults to search the user's path plus several standard directories, and their associated subdirectories, for the JRE.

If you want your installer to search for a valid JVM, then select All common places for the most comprehensive search. On non-Windows systems, you can limit the search to the user's path by selecting Only the path.

If you'd prefer to always install the JVM you supply with your native installers without searching your customers' systems, then simply select No for each of the platforms that you create native installers.



JVM Install Directory

If a native installer includes a JVM bundle (not a third party installer) and determines that the installer should install that JVM and the default JVM's installation directory is left blank, then the installer creates a new directory for the JVM. This insures that the JVM won't conflict with any other installations.

If you prefer to have the JVM bundle installed in a particular directory on the target computer, then set the full directory name in this field, using forward slashes to separate the directories. If the directory name that you supply already exists on the target system, then the native installer will overwrite any existing files.

If you want to install the JVM bundle into a subdirectory of your application's installation directory, then you can use the variable [$AppDir]/ followed by a subdirectory name (e.g., [$AppDir]/jvm). Initially, the installer will install the JVM into a temporary directory because the installer needs to run the JVM itself and then it will copy the JVM to the application's subdirectory during the installation. If a native installer installed the JVM in a subdirectory of the installation directory, then the uninstaller will remove both the application and the JVM. The uninstaller will not remove the JVM if it is installed in any other directory.

If you want to install the JVM bundle into a subdirectory of the Windows directory, then you can use the variable [$WinDir]/ followed by a subdirectory name (e.g., [$WinDir]/jvm). The installer will determine where the target system's Windows directory is from the registry.

If you want to install the JVM bundle into a subdirectory of the Program Files directory, then you can use the variable [$ProgFilesDir]/ followed by a subdirectory name (e.g., [$ProgFilesDir]/jvm). The installer will determine where the target system's Program Files directory is from the registry.

Important: Please note that the way to a enter the directory separator is with a forward slash regardless what separator character the target system uses.

Note: This field only applies to JVM bundles, not third party installers.



Type of JVM installer

JExpress: JExpress can create a simple installer for the JVM. If you're running JExpress on the computer which has the JVM installed that you'd like to bundle, then just select "JExpress" for the type of the installer and click the "Create" button and fill in the information. A dialog opens that lets you select the home directory of the JVM you want to distribute. Be sure that you enter the correct architecture or your installer won't work properly.

Otherwise, copy the BundleJvm.jar file from the JExpress installation directory to the target computer, run it, and follow the instructions.

The advantage of creating a JVM bundle is that you can have the JVM installed as a subdirectory of the installation directory. Plus, java is not installed in the target computer's browsers as many popular 3rd party installers do. And, you have the option of not having the Windows registery changed so other Java apps won't be impacted by the installation of your version of the JVM.

3rd party: You can simply include a 3rd party JVM installer if it can be run from the command line. Ideally, you'll want to configure the command to start it so it runs silently as it might be confusing to your users otherwise.

Be sure to fill in the correct version number. If you'll be creating both 32 and 64 bit installers, then the JVM installers must be for the same major version (e.g., You could ship 1.7.0_01 installer for 32 bit and 1.7.0_04 for 64 bit. You would then enter the version number as 1.7.0).

The JExpress installer will create a new directory, copy the JVM installer to that directory, and then run the command you enter. For example, if you want Oracle's Windows installer to run silently, then you might enter the command jre-6u31-windows-i586-s.exe /s. Do not include the full path to the 3rd party installer in the Command only in the Path in the dialog box.

After the 3rd party installer runs, JExpress must be able to find the installer in the new directory JExpress created, via the Windows registery (on Windows), in the Library tree on Mac, or in the path.

The advantage of including a third party installer of the JVM is that you don't have to have access to each platform to create the JVM bundle. And, any special configuration that the 3rd party installer implements is handled for you.

Currently you can only use 3rd party installers on Windows and Linux.



Valid JVM Versions

You can configure the native installers to search the customer's system and accept:

  • only one particular version of the JVM
  • a range of versions of the JVM,
  • or
  • a minimum version, with no maximum

Be sure to change the JVM you ship with your native installers, if the required or minimum version of the JVM is different than the JVM version that is distributed with JExpress.

If you want to allow a specific range of versions of the JVM, then

  1. add or modify the Minimum valid version that is acceptable
  2. add or modify the Maximum valid version that is acceptable
  3. set the Required valid version to blank

If you want to specify a minimum version of the JVM, with no maximum, then

  1. add or modify the Minimum version that is acceptable
  2. set the Maximum and Required valid versions to blank

Be sure that you change each of the platforms settings that you create native installers. You do this by clicking the radio button for each platform.



Distribution URL

Enter the complete http:// style URL where you'll store your installers and updaters on your web server.

The Distribution URL, the Update URL on the Auto Update panel, and the ftp directory on the Upload panel must reference the same place on your host, but you do not want to enter the same data in both fields. See Auto-updater's update url for more details about how the update url and ftp directory relate to one another.



Valid Java Web Start JVM Versions

You must set which version of the JVM works with your app:

  • only one particular version of the JVM
  • or
  • a minimum version, with no maximum

If you want to specify a minimum version of the JVM, then

  1. add or modify the Minimum version that is acceptable
  2. set the Required valid version to blank