CommandlineJava (Apache Ant API)
Date: 2018-09-11

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

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