Package org.apache.tools.ant.taskdefs

## Class Java

- java.lang.Object
- - org.apache.tools.ant.ProjectComponent
  - - org.apache.tools.ant.Task
    - - org.apache.tools.ant.taskdefs.Java

- All Implemented Interfaces:
    `java.lang.Cloneable`

      public class Java
      extends Task

  Launcher for Java applications. Allows use of the same JVM for the called application thus resulting in much faster operation.
  Since:
    Ant 1.1

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected Redirector` | `redirector` |
    `protected RedirectorElement` | `redirectorElement` |

    - ### Fields inherited from class org.apache.tools.ant.Task

      `target, taskName, taskType, wrapper`

    - ### Fields inherited from class org.apache.tools.ant.ProjectComponent

      `description, location, project`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Java()` | Normal constructor
    `Java​(Task owner)` | create a bound task

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addAssertions​(Assertions asserts)` | Add assertions to enable in this program (if fork=true).
    `void` | `addConfiguredRedirector​(RedirectorElement redirectorElement)` | Add a `RedirectorElement` to this task.
    `void` | `addEnv​(Environment.Variable var)` | Add an environment variable.
    `void` | `addSysproperty​(Environment.Variable sysp)` | Add a system property.
    `void` | `addSyspropertyset​(PropertySet sysp)` | Add a set of properties as system properties.
    `protected void` | `checkConfiguration()` | Check configuration.
    `void` | `clearArgs()` | Clear out the arguments to this java task.
    `Commandline.Argument` | `createArg()` | Add a command-line argument.
    `Path` | `createBootclasspath()` | Add a path to the bootclasspath.
    `Path` | `createClasspath()` | Add a path to the classpath.
    `Commandline.Argument` | `createJvmarg()` | Adds a JVM argument.
    `Path` | `createModulepath()` | Add a path to the modulepath.
    `Permissions` | `createPermissions()` | Set the permissions for the application run inside the same JVM.
    `Path` | `createUpgrademodulepath()` | Add a path to the upgrademodulepath.
    `protected ExecuteWatchdog` | `createWatchdog()` | Create the Watchdog to kill a runaway process.
    `void` | `execute()` | Do the execution.
    `int` | `executeJava()` | Do the execution and return a return code.
    `protected int` | `executeJava​(CommandlineJava commandLine)` | Execute the specified CommandlineJava.
    `CommandlineJava` | `getCommandLine()` | Accessor to the command line.
    `CommandlineJava.SysProperties` | `getSysProperties()` | Get the system properties of the command line.
    `protected void` | `handleErrorFlush​(java.lang.String output)` | Handle output sent to System.err and flush the stream.
    `protected void` | `handleErrorOutput​(java.lang.String output)` | Handle output sent to System.err.
    `protected void` | `handleFlush​(java.lang.String output)` | Pass output sent to System.out to specified output file.
    `int` | `handleInput​(byte[] buffer, int offset, int length)` | Handle an input request by this task.
    `protected void` | `handleOutput​(java.lang.String output)` | Pass output sent to System.out to specified output file.
    `protected void` | `maybeSetResultPropertyValue​(int result)` | Helper method to set result property to the passed in value if appropriate.
    `protected void` | `run​(java.lang.String classname, java.util.Vector<java.lang.String> args)` | Executes the given classname with the given arguments as if it were a command line application.
    `void` | `setAppend​(boolean append)` | If true, append output to existing file.
    `void` | `setArgs​(java.lang.String s)` | Deprecated: use nested arg instead.
    `void` | `setClassname​(java.lang.String s)` | Set the Java class to execute.
    `void` | `setClasspath​(Path s)` | Set the classpath to be used when running the Java class.
    `void` | `setClasspathRef​(Reference r)` | Set the classpath to use by reference.
    `void` | `setCloneVm​(boolean cloneVm)` | If set, system properties will be copied to the cloned VM--as well as the bootclasspath unless you have explicitly specified a bootclasspath.
    `void` | `setDir​(java.io.File d)` | Set the working directory of the process.
    `void` | `setError​(java.io.File error)` | Set the File to which the error stream of the process is redirected.
    `void` | `setErrorProperty​(java.lang.String errorProperty)` | Set the property name whose value should be set to the error of the process.
    `void` | `setFailonerror​(boolean fail)` | If true, then fail if the command exits with a returncode other than zero.
    `void` | `setFork​(boolean s)` | If true, execute in a new VM.
    `void` | `setInput​(java.io.File input)` | Set the input to use for the task.
    `void` | `setInputString​(java.lang.String inputString)` | Set the string to use as input.
    `void` | `setJar​(java.io.File jarfile)` | Set the location of the JAR file to execute.
    `void` | `setJvm​(java.lang.String s)` | Set the command used to start the VM (only if forking).
    `void` | `setJvmargs​(java.lang.String s)` | Set the command line arguments for the JVM.
    `void` | `setJVMVersion​(java.lang.String value)` | Set the JVM version.
    `void` | `setLogError​(boolean logError)` | Set whether error output of exec is logged.
    `void` | `setMaxmemory​(java.lang.String max)` | Corresponds to -mx or -Xmx depending on VM version.
    `void` | `setModule​(java.lang.String module)` | Set the Java module to execute.
    `void` | `setModulepath​(Path mp)` | Set the modulepath to be used when running the Java class.
    `void` | `setModulepathRef​(Reference r)` | Set the modulepath to use by reference.
    `void` | `setNewenvironment​(boolean newenv)` | If true, use a completely new environment.
    `void` | `setOutput​(java.io.File out)` | Set the File to which the output of the process is redirected.
    `void` | `setOutputproperty​(java.lang.String outputProp)` | Set the property name whose value should be set to the output of the process.
    `void` | `setResultProperty​(java.lang.String resultProperty)` | Set the name of the property in which the return code of the command should be stored.
    `void` | `setSourceFile​(java.lang.String sourceFile)` | Set the Java source-file to execute.
    `void` | `setSpawn​(boolean spawn)` | Set whether or not you want the process to be spawned; default is not spawned.
    `void` | `setTimeout​(java.lang.Long value)` | Set the timeout in milliseconds after which the process will be killed.
    `protected void` | `setupRedirector()` | Set up properties on the redirector that we needed to store locally.

    - ### Methods inherited from class org.apache.tools.ant.Task

      `bindToOwner, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, init, isInvalid, log, log, log, log, maybeConfigure, perform, reconfigure, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskType`

    - ### Methods inherited from class org.apache.tools.ant.ProjectComponent

      `clone, getDescription, getLocation, getProject, setDescription, setLocation, setProject`

    - ### Methods inherited from class java.lang.Object

      `equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### redirector

          protected Redirector redirector

    - #### redirectorElement

          protected RedirectorElement redirectorElement

  - ### Constructor Detail

    - #### Java

          public Java()

      Normal constructor

    - #### Java

          public Java​(Task owner)

      create a bound task
      Parameters:
        `owner` - owner

  - ### Method Detail

    - #### execute

          public void execute()
                       throws BuildException

      Do the execution.
      Overrides:
        `execute` in class `Task`
      Throws:
        `BuildException` - if failOnError is set to true and the application returns a nonzero result code.

    - #### executeJava

          public int executeJava()
                          throws BuildException

      Do the execution and return a return code.
      Returns:
        the return code from the execute java class if it was executed in a separate VM (fork = "yes") or a security manager was installed that prohibits ExitVM (default).
      Throws:
        `BuildException` - if required parameters are missing.

    - #### checkConfiguration

          protected void checkConfiguration()
                                     throws BuildException

      Check configuration.
      Throws:
        `BuildException` - if required parameters are missing.

    - #### executeJava

          protected int executeJava​(CommandlineJava commandLine)

      Execute the specified CommandlineJava.
      Parameters:
        `commandLine` - CommandLineJava instance.
      Returns:
        the exit value of the process if forked, 0 otherwise.

    - #### setSpawn

          public void setSpawn​(boolean spawn)

      Set whether or not you want the process to be spawned; default is not spawned.
      Parameters:
        `spawn` - if true you do not want Ant to wait for the end of the process.
      Since:
        Ant 1.6

    - #### setClasspath

          public void setClasspath​(Path s)

      Set the classpath to be used when running the Java class.
      Parameters:
        `s` - an Ant Path object containing the classpath.

    - #### createClasspath

          public Path createClasspath()

      Add a path to the classpath.
      Returns:
        created classpath.

    - #### createBootclasspath

          public Path createBootclasspath()

      Add a path to the bootclasspath.
      Returns:
        created bootclasspath.
      Since:
        Ant 1.6

    - #### setModulepath

          public void setModulepath​(Path mp)

      Set the modulepath to be used when running the Java class.
      Parameters:
        `mp` - an Ant Path object containing the modulepath.
      Since:
        1.9.7

    - #### createModulepath

          public Path createModulepath()

      Add a path to the modulepath.
      Returns:
        created modulepath.
      Since:
        1.9.7

    - #### setModulepathRef

          public void setModulepathRef​(Reference r)

      Set the modulepath to use by reference.
      Parameters:
        `r` - a reference to an existing modulepath.
      Since:
        1.9.7

    - #### createUpgrademodulepath

          public Path createUpgrademodulepath()

      Add a path to the upgrademodulepath.
      Returns:
        created upgrademodulepath.
      Since:
        1.9.7

    - #### createPermissions

          public Permissions createPermissions()

      Set the permissions for the application run inside the same JVM.
      Returns:
        Permissions.
      Since:
        Ant 1.6

    - #### setClasspathRef

          public void setClasspathRef​(Reference r)

      Set the classpath to use by reference.
      Parameters:
        `r` - a reference to an existing classpath.

    - #### setJar

          public void setJar​(java.io.File jarfile)
                      throws BuildException

      Set the location of the JAR file to execute.
      Parameters:
        `jarfile` - the jarfile to execute.
      Throws:
        `BuildException` - if there is also a `classname`, `module` or `sourcefile` attribute specified

    - #### setClassname

          public void setClassname​(java.lang.String s)
                            throws BuildException

      Set the Java class to execute.
      Parameters:
        `s` - the name of the main class.
      Throws:
        `BuildException` - if there is also a `jar` or `sourcefile` attribute specified

    - #### setModule

          public void setModule​(java.lang.String module)
                         throws BuildException

      Set the Java module to execute.
      Parameters:
        `module` - the name of the module.
      Throws:
        `BuildException` - if there is also a `jar` or `sourcefile` attribute specified
      Since:
        1.9.7

    - #### setSourceFile

          public void setSourceFile​(java.lang.String sourceFile)
                             throws BuildException

      Set the Java source-file to execute. Support for single file source program execution, in Java, is only available since Java 11.
      Parameters:
        `sourceFile` - The path to the source file
      Throws:
        `BuildException` - if there is also a `jar`, `classname` or `module` attribute specified
      Since:
        Ant 1.10.5

    - #### setArgs

          public void setArgs​(java.lang.String s)

      Deprecated: use nested arg instead. Set the command line arguments for the class.
      Parameters:
        `s` - arguments.

    - #### setCloneVm

          public void setCloneVm​(boolean cloneVm)

      If set, system properties will be copied to the cloned VM--as well as the bootclasspath unless you have explicitly specified a bootclasspath.

      Doesn't have any effect unless fork is true.

      Parameters:
        `cloneVm` - if true copy system properties.
      Since:
        Ant 1.7

    - #### createArg

          public Commandline.Argument createArg()

      Add a command-line argument.
      Returns:
        created argument.

    - #### setResultProperty

          public void setResultProperty​(java.lang.String resultProperty)

      Set the name of the property in which the return code of the command should be stored. Only of interest if failonerror=false.
      Parameters:
        `resultProperty` - name of property.
      Since:
        Ant 1.6

    - #### maybeSetResultPropertyValue

          protected void maybeSetResultPropertyValue​(int result)

      Helper method to set result property to the passed in value if appropriate.
      Parameters:
        `result` - the exit code

    - #### setFork

          public void setFork​(boolean s)

      If true, execute in a new VM.
      Parameters:
        `s` - do you want to run Java in a new VM.

    - #### setJvmargs

          public void setJvmargs​(java.lang.String s)

      Set the command line arguments for the JVM.
      Parameters:
        `s` - jvmargs.

    - #### createJvmarg

          public Commandline.Argument createJvmarg()

      Adds a JVM argument.
      Returns:
        JVM argument created.

    - #### setJvm

          public void setJvm​(java.lang.String s)

      Set the command used to start the VM (only if forking).
      Parameters:
        `s` - command to start the VM.

    - #### addSysproperty

          public void addSysproperty​(Environment.Variable sysp)

      Add a system property.
      Parameters:
        `sysp` - system property.

    - #### addSyspropertyset

          public void addSyspropertyset​(PropertySet sysp)

      Add a set of properties as system properties.
      Parameters:
        `sysp` - set of properties to add.
      Since:
        Ant 1.6

    - #### setFailonerror

          public void setFailonerror​(boolean fail)

      If true, then fail if the command exits with a returncode other than zero.
      Parameters:
        `fail` - if true fail the build when the command exits with a nonzero returncode.

    - #### setDir

          public void setDir​(java.io.File d)

      Set the working directory of the process.
      Parameters:
        `d` - working directory.

    - #### setOutput

          public void setOutput​(java.io.File out)

      Set the File to which the output of the process is redirected.
      Parameters:
        `out` - the output File.

    - #### setInput

          public void setInput​(java.io.File input)

      Set the input to use for the task.
      Parameters:
        `input` - name of the input file.

    - #### setInputString

          public void setInputString​(java.lang.String inputString)

      Set the string to use as input.
      Parameters:
        `inputString` - the string which is used as the input source.

    - #### setLogError

          public void setLogError​(boolean logError)

      Set whether error output of exec is logged. This is only useful when output is being redirected and error output is desired in the Ant log.
      Parameters:
        `logError` - get in the ant log the messages coming from stderr in the case that fork = true.

    - #### setError

          public void setError​(java.io.File error)

      Set the File to which the error stream of the process is redirected.
      Parameters:
        `error` - file getting the error stream.
      Since:
        Ant 1.6

    - #### setOutputproperty

          public void setOutputproperty​(java.lang.String outputProp)

      Set the property name whose value should be set to the output of the process.
      Parameters:
        `outputProp` - property name.

    - #### setErrorProperty

          public void setErrorProperty​(java.lang.String errorProperty)

      Set the property name whose value should be set to the error of the process.
      Parameters:
        `errorProperty` - property name.
      Since:
        Ant 1.6

    - #### setMaxmemory

          public void setMaxmemory​(java.lang.String max)

      Corresponds to -mx or -Xmx depending on VM version.
      Parameters:
        `max` - max memory parameter.

    - #### setJVMVersion

          public void setJVMVersion​(java.lang.String value)

      Set the JVM version.
      Parameters:
        `value` - JVM version.

    - #### addEnv

          public void addEnv​(Environment.Variable var)

      Add an environment variable.

      Will be ignored if we are not forking a new VM.

      Parameters:
        `var` - new environment variable.
      Since:
        Ant 1.5

    - #### setNewenvironment

          public void setNewenvironment​(boolean newenv)

      If true, use a completely new environment.

      Will be ignored if we are not forking a new VM.

      Parameters:
        `newenv` - if true, use a completely new environment.
      Since:
        Ant 1.5

    - #### setAppend

          public void setAppend​(boolean append)

      If true, append output to existing file.
      Parameters:
        `append` - if true, append output to existing file.
      Since:
        Ant 1.5

    - #### setTimeout

          public void setTimeout​(java.lang.Long value)

      Set the timeout in milliseconds after which the process will be killed.
      Parameters:
        `value` - timeout in milliseconds.
      Since:
        Ant 1.5

    - #### addAssertions

          public void addAssertions​(Assertions asserts)

      Add assertions to enable in this program (if fork=true).
      Parameters:
        `asserts` - assertion set.
      Since:
        Ant 1.6

    - #### addConfiguredRedirector

          public void addConfiguredRedirector​(RedirectorElement redirectorElement)

      Add a `RedirectorElement` to this task.
      Parameters:
        `redirectorElement` - `RedirectorElement`.

    - #### handleOutput

          protected void handleOutput​(java.lang.String output)

      Pass output sent to System.out to specified output file.
      Overrides:
        `handleOutput` in class `Task`
      Parameters:
        `output` - a string of output on its way to the handlers.
      Since:
        Ant 1.5

    - #### handleInput

          public int handleInput​(byte[] buffer,
                                 int offset,
                                 int length)
                          throws java.io.IOException

      Handle an input request by this task.
      Overrides:
        `handleInput` in class `Task`
      Parameters:
        `buffer` - the buffer into which data is to be read.
        `offset` - the offset into the buffer at which data is stored.
        `length` - the amount of data to read.
      Returns:
        the number of bytes read.
      Throws:
        `java.io.IOException` - if the data cannot be read.
      Since:
        Ant 1.6

    - #### handleFlush

          protected void handleFlush​(java.lang.String output)

      Pass output sent to System.out to specified output file.
      Overrides:
        `handleFlush` in class `Task`
      Parameters:
        `output` - string of output on its way to its handlers.
      Since:
        Ant 1.5.2

    - #### handleErrorOutput

          protected void handleErrorOutput​(java.lang.String output)

      Handle output sent to System.err.
      Overrides:
        `handleErrorOutput` in class `Task`
      Parameters:
        `output` - string of stderr.
      Since:
        Ant 1.5

    - #### handleErrorFlush

          protected void handleErrorFlush​(java.lang.String output)

      Handle output sent to System.err and flush the stream.
      Overrides:
        `handleErrorFlush` in class `Task`
      Parameters:
        `output` - string of stderr.
      Since:
        Ant 1.5.2

    - #### setupRedirector

          protected void setupRedirector()

      Set up properties on the redirector that we needed to store locally.

    - #### run

          protected void run​(java.lang.String classname,
                             java.util.Vector<java.lang.String> args)
                      throws BuildException

      Executes the given classname with the given arguments as if it were a command line application.
      Parameters:
        `classname` - the name of the class to run.
        `args` - arguments for the class.
      Throws:
        `BuildException` - in case of IOException in the execution.

    - #### clearArgs

          public void clearArgs()

      Clear out the arguments to this java task.

    - #### createWatchdog

          protected ExecuteWatchdog createWatchdog()
                                            throws BuildException

      Create the Watchdog to kill a runaway process.
      Returns:
        new watchdog.
      Throws:
        `BuildException` - under unknown circumstances.
      Since:
        Ant 1.5

    - #### getCommandLine

          public CommandlineJava getCommandLine()

      Accessor to the command line.
      Returns:
        the current command line.
      Since:
        1.6.3

    - #### getSysProperties

          public CommandlineJava.SysProperties getSysProperties()

      Get the system properties of the command line.
      Returns:
        the current properties of this java invocation.
      Since:
        1.6.3