# Class AbstractVMInstall

java.lang.Object
org.eclipse.jdt.launching.AbstractVMInstall

All Implemented Interfaces:
  `IVMInstall, IVMInstall2, IVMInstall3`

Direct Known Subclasses:
  `VMStandin`

public abstract class AbstractVMInstall extends Object implements IVMInstall, IVMInstall2, IVMInstall3
Abstract implementation of a VM install.

Clients implementing VM installs must subclass this class.

## Constructor Summary

Constructors
Constructor
Description
`AbstractVMInstall(IVMInstallType type, String id)`
Constructs a new VM install.

## Method Summary

Modifier and Type
Method
Description
`protected void`
`abort(String message, Throwable exception, int code)`
Throws a core exception with an error status object built from the given message, lower level exception, and error code.
`boolean`
`equals(Object object)`
`Map<String,String>`
`evaluateSystemProperties(String[] properties, org.eclipse.core.runtime.IProgressMonitor monitor)`
Evaluates the specified system properties in this VM, returning the result as a map of property names to property values.
`String`
`getAttribute(String key)`
Returns a VM specific attribute associated with the given key or `null` if none.
`Map<String,String>`
`getAttributes()`
Returns a map of VM specific attributes stored with this VM install.
`String`
`getId()`
Returns the id for this VM.
`File`
`getInstallLocation()`
Returns the root directory of the install location of this VM.
`URL`
`getJavadocLocation()`
Returns the Javadoc location associated with this VM install.
`String`
`getJavaVersion()`
Returns a string representing the `java.version` system property of this VM install, or `null` if unknown.
`LibraryLocation[]`
`getLibraryLocations()`
Returns the library locations of this IVMInstall.
`String`
`getName()`
Returns the display name of this VM.
`String`
`getVMArgs()`
Returns VM arguments to be used with this vm install whenever this VM is launched as a raw string, or `null` if none.
`String[]`
`getVMArguments()`
Returns VM arguments to be used with this vm install whenever this VM is launched as they should be passed to the command line, or `null` if none.
`IVMInstallType`
`getVMInstallType()`
Returns the VM type of this VM.
`IVMRunner`
`getVMRunner(String mode)`
Returns a VM runner that runs this installed VM in the given mode.
`int`
`hashCode()`
`void`
`setAttribute(String key, String value)`
Sets a VM specific attribute.
`void`
`setInstallLocation(File installLocation)`
Sets the root directory of the install location of this VM.
`void`
`setJavadocLocation(URL url)`
Sets the Javadoc location associated with this VM install.
`void`
`setLibraryLocations(LibraryLocation[] locations)`
Sets the library locations of this IVMInstall.
`void`
`setName(String name)`
Sets the display name of this VM.
`protected void`
`setNotify(boolean notify)`
Whether this VM should fire property change notifications.
`void`
`setVMArgs(String vmArgs)`
Sets VM arguments to be used with this vm install whenever this VM is launched as a raw string, possibly `null`.
`void`
`setVMArguments(String[] vmArgs)`
Sets VM arguments to be used with this vm install whenever this VM is launched, possibly `null`.

### Methods inherited from class Object

`clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### AbstractVMInstall

public AbstractVMInstall(IVMInstallType type, String id)
Constructs a new VM install.

Parameters:
  `type` - The type of this VM install. Must not be `null`
  `id` - The unique identifier of this VM instance Must not be `null`.
Throws:
  `IllegalArgumentException` - if any of the required parameters are `null`.

## Method Details

### getId

public String getId()
Description copied from interface: `IVMInstall`
Returns the id for this VM. VM IDs are unique within the VMs of a given VM type. The VM id is not intended to be presented to users.

Specified by:
  `getId` in interface `IVMInstall`
Returns:
  the VM identifier. Must not return `null`.

### getName

public String getName()
Description copied from interface: `IVMInstall`
Returns the display name of this VM. The VM name is intended to be presented to users.

Specified by:
  `getName` in interface `IVMInstall`
Returns:
  the display name of this VM. May return `null`.

### setName

public void setName(String name)
Description copied from interface: `IVMInstall`
Sets the display name of this VM. The VM name is intended to be presented to users.

Specified by:
  `setName` in interface `IVMInstall`
Parameters:
  `name` - the display name of this VM

### getInstallLocation

public File getInstallLocation()
Description copied from interface: `IVMInstall`
Returns the root directory of the install location of this VM.

Specified by:
  `getInstallLocation` in interface `IVMInstall`
Returns:
  the root directory of this VM installation. May return `null`.

### setInstallLocation

public void setInstallLocation(File installLocation)
Description copied from interface: `IVMInstall`
Sets the root directory of the install location of this VM.

Specified by:
  `setInstallLocation` in interface `IVMInstall`
Parameters:
  `installLocation` - the root directory of this VM installation

### getVMInstallType

public IVMInstallType getVMInstallType()
Description copied from interface: `IVMInstall`
Returns the VM type of this VM.

Specified by:
  `getVMInstallType` in interface `IVMInstall`
Returns:
  the VM type that created this IVMInstall instance

### getVMRunner

public IVMRunner getVMRunner(String mode)
Description copied from interface: `IVMInstall`
Returns a VM runner that runs this installed VM in the given mode.

Specified by:
  `getVMRunner` in interface `IVMInstall`
Parameters:
  `mode` - the mode the VM should be launched in; one of the constants declared in `org.eclipse.debug.core.ILaunchManager`
Returns:
  a VMRunner for a given mode May return `null` if the given mode is not supported by this VM.
See Also:
  - `ILaunchManager`

### getLibraryLocations

public LibraryLocation[] getLibraryLocations()
Description copied from interface: `IVMInstall`
Returns the library locations of this IVMInstall. Generally, clients should use `JavaRuntime.getLibraryLocations(IVMInstall)` to determine the libraries associated with this VM install.

Specified by:
  `getLibraryLocations` in interface `IVMInstall`
Returns:
  The library locations of this IVMInstall. Returns `null` to indicate that this VM install uses the default library locations associated with this VM's install type.
See Also:
  - `IVMInstall.setLibraryLocations(LibraryLocation[])`

### setLibraryLocations

public void setLibraryLocations(LibraryLocation[] locations)
Description copied from interface: `IVMInstall`
Sets the library locations of this IVMInstall.

Specified by:
  `setLibraryLocations` in interface `IVMInstall`
Parameters:
  `locations` - The `LibraryLocation`s to associate with this IVMInstall. May be `null` to indicate that this VM install uses the default library locations associated with this VM's install type.

### getJavadocLocation

public URL getJavadocLocation()
Description copied from interface: `IVMInstall`
Returns the Javadoc location associated with this VM install.

Specified by:
  `getJavadocLocation` in interface `IVMInstall`
Returns:
  a url pointing to the Javadoc location associated with this VM install, or `null` if none

### setJavadocLocation

public void setJavadocLocation(URL url)
Description copied from interface: `IVMInstall`
Sets the Javadoc location associated with this VM install.

Specified by:
  `setJavadocLocation` in interface `IVMInstall`
Parameters:
  `url` - a url pointing to the Javadoc location associated with this VM install

### setNotify

protected void setNotify(boolean notify)
Whether this VM should fire property change notifications.

Parameters:
  `notify` - if this VM should fire property change notifications.
Since:
  2.1

### equals

public boolean equals(Object object)

Overrides:
  `equals` in class `Object`

### hashCode

public int hashCode()

Overrides:
  `hashCode` in class `Object`

### getVMArguments

public String[] getVMArguments()
Description copied from interface: `IVMInstall`
Returns VM arguments to be used with this vm install whenever this VM is launched as they should be passed to the command line, or `null` if none.

Specified by:
  `getVMArguments` in interface `IVMInstall`
Returns:
  VM arguments to be used with this vm install whenever this VM is launched as they should be passed to the command line, or `null` if none

### setVMArguments

public void setVMArguments(String[] vmArgs)
Description copied from interface: `IVMInstall`
Sets VM arguments to be used with this vm install whenever this VM is launched, possibly `null`. This is equivalent to `setVMArgs(String)` with whitespace character delimited arguments.

Specified by:
  `setVMArguments` in interface `IVMInstall`
Parameters:
  `vmArgs` - VM arguments to be used with this vm install whenever this VM is launched, possibly `null`

### getVMArgs

public String getVMArgs()
Description copied from interface: `IVMInstall2`
Returns VM arguments to be used with this vm install whenever this VM is launched as a raw string, or `null` if none.

Specified by:
  `getVMArgs` in interface `IVMInstall2`
Returns:
  VM arguments to be used with this vm install whenever this VM is launched as a raw string, or `null` if none

### setVMArgs

public void setVMArgs(String vmArgs)
Description copied from interface: `IVMInstall2`
Sets VM arguments to be used with this vm install whenever this VM is launched as a raw string, possibly `null`.

Specified by:
  `setVMArgs` in interface `IVMInstall2`
Parameters:
  `vmArgs` - VM arguments to be used with this vm install whenever this VM is launched as a raw string, possibly `null`

### getJavaVersion

public String getJavaVersion()
Description copied from interface: `IVMInstall2`
Returns a string representing the `java.version` system property of this VM install, or `null` if unknown.

Specified by:
  `getJavaVersion` in interface `IVMInstall2`
Returns:
  a string representing the `java.version` system property of this VM install, or `null` if unknown.

### evaluateSystemProperties

public Map<String,String> evaluateSystemProperties(String[] properties, org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException
Description copied from interface: `IVMInstall3`
Evaluates the specified system properties in this VM, returning the result as a map of property names to property values.

Specified by:
  `evaluateSystemProperties` in interface `IVMInstall3`
Parameters:
  `properties` - the property names to evaluate, for example `{"user.home"}`
  `monitor` - progress monitor or `null`
Returns:
  map of system property names to associated property values
Throws:
  `org.eclipse.core.runtime.CoreException` - if an exception occurs evaluating the properties

### abort

protected void abort(String message, Throwable exception, int code) throws org.eclipse.core.runtime.CoreException
Throws a core exception with an error status object built from the given message, lower level exception, and error code.

Parameters:
  `message` - the status message
  `exception` - lower level exception associated with the error, or `null` if none
  `code` - error code
Throws:
  `org.eclipse.core.runtime.CoreException` - the "abort" core exception
Since:
  3.2

### setAttribute

public void setAttribute(String key, String value)
Sets a VM specific attribute. Attributes are persisted and restored with VM installs. Specifying a value of `null` as a value removes the attribute. Change notification is provided to `IVMInstallChangedListener` for VM attributes.

Parameters:
  `key` - attribute key, cannot be `null`
  `value` - attribute value or `null` to remove the attribute
Since:
  3.4

### getAttribute

public String getAttribute(String key)
Returns a VM specific attribute associated with the given key or `null` if none.

Parameters:
  `key` - attribute key, cannot be `null`
Returns:
  attribute value, or `null` if none
Since:
  3.4

### getAttributes

public Map<String,String> getAttributes()
Returns a map of VM specific attributes stored with this VM install. Keys and values are strings. Modifying the map does not modify the attributes associated with this VM install.

Returns:
  map of VM attributes
Since:
  3.4