Package org.apache.tools.ant.types

# Class CommandlineJava

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

All Implemented Interfaces:
  `Cloneable`

public class CommandlineJava extends Object implements 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.
  `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.
  `String`
  `describeCommand()`
  Return a String that describes the command and arguments suitable for verbose output before a call to `Runtime.exec(String[])`.
  `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.
  `String`
  `getClassname()`
  Get the name of the class to be run.
  `Path`
  `getClasspath()`
  Get the classpath for the command.
  `String[]`
  `getCommandline()`
  Get the command line to run a Java vm.
  `String`
  `getJar()`
  Get the name of the jar to be run.
  `Commandline`
  `getJavaCommand()`
  Get the Java command to be used.
  `String`
  `getModule()`
  Get the name of the module to be run.
  `Path`
  `getModulepath()`
  Get the modulepath.
  `String`
  `getSourceFile()`
  `CommandlineJava.SysProperties`
  `getSystemProperties()`
  Get the system properties object.
  `Path`
  `getUpgrademodulepath()`
  Get the upgrademodulepath.
  `Commandline`
  `getVmCommand()`
  Get the VM command, including memory.
  `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​(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​(String jarpathname)`
  Set a jar file to execute via the -jar option.
  `void`
  `setMaxmemory​(String max)`
  Specify max memory of the JVM.
  `void`
  `setModule​(String module)`
  Set the module to execute.
  `void`
  `setSourceFile​(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​(String vm)`
  Set the executable used to start the new JVM.
  `void`
  `setVmversion​(String value)`
  Set the JVM version required.
  `int`
  `size()`
  Deprecated.
  since 1.7.
  `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​(String vm)
    Set the executable used to start the new JVM.
    Parameters:
      `vm` - the executable to use.

  - ### setVmversion

    public void setVmversion​(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​(String jarpathname)
    Set a jar file to execute via the -jar option.
    Parameters:
      `jarpathname` - the pathname of the jar to execute.

  - ### getJar

    public 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​(String classname)
    Set the classname to execute.
    Parameters:
      `classname` - the fully qualified classname.

  - ### getClassname

    public 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​(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 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​(String module)
    Set the module to execute.
    Parameters:
      `module` - the module name.
    Since:
      1.9.7

  - ### getModule

    public 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 String getVmversion()
    Get the vm version.
    Returns:
      the vm version.

  - ### getCommandline

    public 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​(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 String toString()
    Get a string description.
    Overrides:
      `toString` in class `Object`
    Returns:
      the command line as a string.

  - ### describeCommand

    public 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 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 Object clone() throws CloneNotSupportedException
    Deep clone the object.
    Overrides:
      `clone` in class `Object`
    Returns:
      a CommandlineJava object.
    Throws:
      `BuildException` - if anything went wrong.
      `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