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 Commandlines. One is used for the vm/options and one for the classname/arguments. It provides specific methods for a Java command line.
  • 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