Package org.apache.tools.ant.types

# Class CommandlineJava

java.lang.Object
org.apache.tools.ant.types.CommandlineJava

All Implemented Interfaces:
  `java.lang.Cloneable`

    public class CommandlineJava
    extends java.lang.Object
    implements java.lang.Cloneable

A representation of a Java command line that is a composite of 2 `Commandline`s. One is used for the vm/options and one for the classname/arguments. It provides specific methods for a Java command line.

## Nested Class Summary

Nested Classes
Modifier and Type | Class | Description
--- | --- | ---
`static class` | `CommandlineJava.SysProperties` | Specialized Environment class for System properties.

## Constructor Summary

Constructors
Constructor | Description
--- | ---
`CommandlineJava()` | Constructor uses the VM we are running on now.

## Method Summary

Modifier and Type | Method | Description
--- | --- | ---
`void` | `addSysproperties​(CommandlineJava.SysProperties sysp)` | Add a set of system properties.
`void` | `addSysproperty​(Environment.Variable sysp)` | Add a system property.
`void` | `addSyspropertyset​(PropertySet sysp)` | Add a set of system properties.
`void` | `clearJavaArgs()` | Clear out the java arguments.
`java.lang.Object` | `clone()` | Deep clone the object.
`Commandline.Argument` | `createArgument()` | Create a new argument to the java program.
`Path` | `createBootclasspath​(Project p)` | Create a boot classpath.
`Path` | `createClasspath​(Project p)` | Create a classpath.
`Path` | `createModulepath​(Project p)` | Create a modulepath.
`Path` | `createUpgrademodulepath​(Project p)` | Create an upgrademodulepath.
`Commandline.Argument` | `createVmArgument()` | Create a new JVM argument.
`java.lang.String` | `describeCommand()` | Return a String that describes the command and arguments suitable for verbose output before a call to `Runtime.exec(String[])`.
`java.lang.String` | `describeJavaCommand()` | Return a String that describes the java command and arguments for in-VM executions.
`protected Commandline` | `getActualVMCommand()` | Get the VM command parameters, including memory settings.
`Assertions` | `getAssertions()` | Get the current assertions.
`Path` | `getBootclasspath()` | Get the boot classpath.
`java.lang.String` | `getClassname()` | Get the name of the class to be run.
`Path` | `getClasspath()` | Get the classpath for the command.
`java.lang.String[]` | `getCommandline()` | Get the command line to run a Java vm.
`java.lang.String` | `getJar()` | Get the name of the jar to be run.
`Commandline` | `getJavaCommand()` | Get the Java command to be used.
`java.lang.String` | `getModule()` | Get the name of the module to be run.
`Path` | `getModulepath()` | Get the modulepath.
`java.lang.String` | `getSourceFile()` |
`CommandlineJava.SysProperties` | `getSystemProperties()` | Get the system properties object.
`Path` | `getUpgrademodulepath()` | Get the upgrademodulepath.
`Commandline` | `getVmCommand()` | Get the VM command, including memory.
`java.lang.String` | `getVmversion()` | Get the vm version.
`protected boolean` | `haveBootclasspath​(boolean log)` | Determine whether the bootclasspath has been specified, and whether it shall really be used (build.sysclasspath could be set or the VM may not support it).
`boolean` | `haveClasspath()` | Determine whether the classpath has been specified, and whether it shall really be used or be nulled by build.sysclasspath.
`boolean` | `haveModulepath()` | Determine whether the modulepath has been specified.
`boolean` | `haveUpgrademodulepath()` | Determine whether the upgrademodulepath has been specified.
`void` | `restoreSystemProperties()` | Restore the cached system properties.
`void` | `setAssertions​(Assertions assertions)` | Add an assertion set to the command.
`void` | `setClassname​(java.lang.String classname)` | Set the classname to execute.
`void` | `setCloneVm​(boolean cloneVm)` | Set whether system properties will be copied to the cloned VM--as well as the bootclasspath unless you have explicitly specified a bootclasspath.
`void` | `setJar​(java.lang.String jarpathname)` | Set a jar file to execute via the -jar option.
`void` | `setMaxmemory​(java.lang.String max)` | Specify max memory of the JVM.
`void` | `setModule​(java.lang.String module)` | Set the module to execute.
`void` | `setSourceFile​(java.lang.String sourceFile)` | Set the source-file, to execute as single file source programs, a feature, available since Java 11.
`void` | `setSystemProperties()` | Cache current system properties and set them to those in this Java command.
`void` | `setVm​(java.lang.String vm)` | Set the executable used to start the new JVM.
`void` | `setVmversion​(java.lang.String value)` | Set the JVM version required.
`int` | `size()` | Deprecated. since 1.7.
`java.lang.String` | `toString()` | Get a string description.

### Methods inherited from class java.lang.Object

`equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### CommandlineJava

public CommandlineJava()
Constructor uses the VM we are running on now.

## Method Details

### createArgument

public Commandline.Argument createArgument()
Create a new argument to the java program.

Returns:
  an argument to be configured.

### createVmArgument

public Commandline.Argument createVmArgument()
Create a new JVM argument.

Returns:
  an argument to be configured.

### addSysproperty

public void addSysproperty​(Environment.Variable sysp)
Add a system property.

Parameters:
  `sysp` - a property to be set in the JVM.

### addSyspropertyset

public void addSyspropertyset​(PropertySet sysp)
Add a set of system properties.

Parameters:
  `sysp` - a set of properties.

### addSysproperties

public void addSysproperties​(CommandlineJava.SysProperties sysp)
Add a set of system properties.

Parameters:
  `sysp` - a set of properties.
Since:
  Ant 1.6.3

### setVm

public void setVm​(java.lang.String vm)
Set the executable used to start the new JVM.

Parameters:
  `vm` - the executable to use.

### setVmversion

public void setVmversion​(java.lang.String value)
Set the JVM version required.

Parameters:
  `value` - the version required.

### setCloneVm

public void setCloneVm​(boolean cloneVm)
Set whether system properties will be copied to the cloned VM--as well as the bootclasspath unless you have explicitly specified a bootclasspath.

Parameters:
  `cloneVm` - if true copy the system properties.
Since:
  Ant 1.7

### getAssertions

public Assertions getAssertions()
Get the current assertions.

Returns:
  assertions or null.

### setAssertions

public void setAssertions​(Assertions assertions)
Add an assertion set to the command.

Parameters:
  `assertions` - assertions to make.

### setJar

public void setJar​(java.lang.String jarpathname)
Set a jar file to execute via the -jar option.

Parameters:
  `jarpathname` - the pathname of the jar to execute.

### getJar

public java.lang.String getJar()
Get the name of the jar to be run.

Returns:
  the pathname of the jar file to run via -jar option or `null` if there is no jar to run.
See Also:
  `getClassname()`

### setClassname

public void setClassname​(java.lang.String classname)
Set the classname to execute.

Parameters:
  `classname` - the fully qualified classname.

### getClassname

public java.lang.String getClassname()
Get the name of the class to be run.

Returns:
  the name of the class to run or `null` if there is no class.
See Also:
  `getJar()`

### setSourceFile

public void setSourceFile​(java.lang.String sourceFile)
Set the source-file, to execute as single file source programs, a feature, available since Java 11.

Parameters:
  `sourceFile` - The path to the source file
Since:
  Ant 1.10.5

### getSourceFile

public java.lang.String getSourceFile()

Returns:
  Returns the source-file to execute, if this command line has been `configured for single file source program execution`. Else returns null.
Since:
  Ant 1.10.5

### setModule

public void setModule​(java.lang.String module)
Set the module to execute.

Parameters:
  `module` - the module name.
Since:
  1.9.7

### getModule

public java.lang.String getModule()
Get the name of the module to be run.

Returns:
  the name of the module to run or `null` if there is no module.
Since:
  1.9.7
See Also:
  `getJar()`, `getClassname()`

### createClasspath

public Path createClasspath​(Project p)
Create a classpath.

Parameters:
  `p` - the project to use to create the path.
Returns:
  a path to be configured.

### createBootclasspath

public Path createBootclasspath​(Project p)
Create a boot classpath.

Parameters:
  `p` - the project to use to create the path.
Returns:
  a path to be configured.
Since:
  Ant 1.6

### createModulepath

public Path createModulepath​(Project p)
Create a modulepath.

Parameters:
  `p` - the project to use to create the path.
Returns:
  a path to be configured.
Since:
  1.9.7

### createUpgrademodulepath

public Path createUpgrademodulepath​(Project p)
Create an upgrademodulepath.

Parameters:
  `p` - the project to use to create the path.
Returns:
  a path to be configured.
Since:
  1.9.7

### getVmversion

public java.lang.String getVmversion()
Get the vm version.

Returns:
  the vm version.

### getCommandline

public java.lang.String[] getCommandline()
Get the command line to run a Java vm.

Returns:
  the list of all arguments necessary to run the vm.

### setMaxmemory

public void setMaxmemory​(java.lang.String max)
Specify max memory of the JVM. -mx or -Xmx depending on VM version.

Parameters:
  `max` - the string to pass to the jvm to specify the max memory.

### toString

public java.lang.String toString()
Get a string description.

Overrides:
  `toString` in class `java.lang.Object`
Returns:
  the command line as a string.

### describeCommand

public java.lang.String describeCommand()
Return a String that describes the command and arguments suitable for verbose output before a call to `Runtime.exec(String[])`.

Returns:
  the description string.
Since:
  Ant 1.5

### describeJavaCommand

public java.lang.String describeJavaCommand()
Return a String that describes the java command and arguments for in-VM executions.

The class name is the executable in this context.

Returns:
  the description string.
Since:
  Ant 1.5

### getActualVMCommand

protected Commandline getActualVMCommand()
Get the VM command parameters, including memory settings.

Returns:
  the VM command parameters.

### size

@Deprecated public int size()
Deprecated.
since 1.7. Please don't use this, it effectively creates the entire command.
Get the size of the java command line. This is a fairly intensive operation, as it has to evaluate the size of many components.

Returns:
  the total number of arguments in the java command line.
See Also:
  `getCommandline()`

### getJavaCommand

public Commandline getJavaCommand()
Get the Java command to be used.

Returns:
  the java command--not a clone.

### getVmCommand

public Commandline getVmCommand()
Get the VM command, including memory.

Returns:
  A deep clone of the instance's VM command, with memory settings added.

### getClasspath

public Path getClasspath()
Get the classpath for the command.

Returns:
  the classpath or null.

### getBootclasspath

public Path getBootclasspath()
Get the boot classpath.

Returns:
  boot classpath or null.

### getModulepath

public Path getModulepath()
Get the modulepath.

Returns:
  modulepath or null.
Since:
  1.9.7

### getUpgrademodulepath

public Path getUpgrademodulepath()
Get the upgrademodulepath.

Returns:
  upgrademodulepath or null.
Since:
  1.9.7

### setSystemProperties

public void setSystemProperties() throws BuildException
Cache current system properties and set them to those in this Java command.

Throws:
  `BuildException` - if Security prevented this operation.

### restoreSystemProperties

public void restoreSystemProperties() throws BuildException
Restore the cached system properties.

Throws:
  `BuildException` - if Security prevented this operation, or there was no system properties to restore

### getSystemProperties

public CommandlineJava.SysProperties getSystemProperties()
Get the system properties object.

Returns:
  The system properties object.

### clone

public java.lang.Object clone() throws java.lang.CloneNotSupportedException
Deep clone the object.

Overrides:
  `clone` in class `java.lang.Object`
Returns:
  a CommandlineJava object.
Throws:
  `BuildException` - if anything went wrong.
  `java.lang.CloneNotSupportedException` - never.

### clearJavaArgs

public void clearJavaArgs()
Clear out the java arguments.

### haveClasspath

public boolean haveClasspath()
Determine whether the classpath has been specified, and whether it shall really be used or be nulled by build.sysclasspath.

Returns:
  true if the classpath is to be used.
Since:
  Ant 1.6

### haveBootclasspath

protected boolean haveBootclasspath​(boolean log)
Determine whether the bootclasspath has been specified, and whether it shall really be used (build.sysclasspath could be set or the VM may not support it).

Parameters:
  `log` - whether to log a warning if a bootclasspath has been specified but will be ignored.
Returns:
  true if the bootclasspath is to be used.
Since:
  Ant 1.6

### haveModulepath

public boolean haveModulepath()
Determine whether the modulepath has been specified.

Returns:
  true if the modulepath is to be used.
Since:
  1.9.7

### haveUpgrademodulepath

public boolean haveUpgrademodulepath()
Determine whether the upgrademodulepath has been specified.

Returns:
  true if the upgrademodulepath is to be used.
Since:
  1.9.7