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
`static class` `CommandlineJava.SysProperties` Specialized Environment class for System properties.

### Constructor Summary

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

### Method Summary

All Methods Instance Methods Concrete Methods Deprecated Methods
`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 Detail

#### CommandlineJava

    public CommandlineJava()

Constructor uses the VM we are running on now.

### Method Detail

#### 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