Class 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 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
      • 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