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