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 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(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:
    • 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:
    • 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:
    • 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:
    • 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