Package org.apache.tools.ant.taskdefs.compilers

## Class DefaultCompilerAdapter

- java.lang.Object
- - org.apache.tools.ant.taskdefs.compilers.DefaultCompilerAdapter

All Implemented Interfaces:
  `CompilerAdapter`, `CompilerAdapterExtension`

Direct Known Subclasses:
  `Gcj`, `Javac12`, `Javac13`, `JavacExternal`, `Jikes`, `Jvc`, `Kjc`, `Sj`

    public abstract class DefaultCompilerAdapter
    extends java.lang.Object
    implements CompilerAdapter, CompilerAdapterExtension

This is the default implementation for the CompilerAdapter interface. Currently, this is a cut-and-paste of the original javac task.

Since:
  Ant 1.3

### Field Summary

Fields
`protected Javac` `attributes`
`protected Path` `bootclasspath`
`protected Path` `compileClasspath`
`protected java.io.File[]` `compileList`
`protected Path` `compileSourcepath`
`protected boolean` `debug`
`protected boolean` `depend`
`protected boolean` `deprecation`
`protected java.io.File` `destDir`
`protected java.lang.String` `encoding`
`protected Path` `extdirs`
`protected boolean` `includeAntRuntime`
`protected boolean` `includeJavaRuntime`
`protected Location` `location`
`protected static java.lang.String` `lSep` Deprecated.
`protected java.lang.String` `memoryInitialSize`
`protected java.lang.String` `memoryMaximumSize`
`protected Path` `modulepath`
`protected Path` `moduleSourcepath`
`protected boolean` `optimize`
`protected Project` `project`
`protected java.lang.String` `release`
`protected Path` `src`
`protected java.lang.String` `target`
`protected Path` `upgrademodulepath`
`protected boolean` `verbose`

### Constructor Summary

Constructors
`DefaultCompilerAdapter()`

### Method Summary

All Methods Instance Methods Concrete Methods Deprecated Methods
`protected void` `addCurrentCompilerArgs​(Commandline cmd)` Adds the command line arguments specific to the current implementation.
`protected void` `addExtdirsToClasspath​(Path classpath)` Deprecated. since 1.5.x.
`protected boolean` `assumeJava1_1Plus()` Shall we assume JDK 1.1+ command line switches?
`protected boolean` `assumeJava1_2Plus()` Shall we assume JDK 1.2+ command line switches?
`protected boolean` `assumeJava1_3Plus()` Shall we assume JDK 1.3+ command line switches?
`protected boolean` `assumeJava1_4Plus()` Shall we assume JDK 1.4+ command line switches?
`protected boolean` `assumeJava1_5Plus()` Shall we assume JDK 1.5+ command line switches?
`protected boolean` `assumeJava1_6Plus()` Shall we assume JDK 1.6+ command line switches?
`protected boolean` `assumeJava1_7Plus()` Shall we assume JDK 1.7+ command line switches?
`protected boolean` `assumeJava1_8Plus()` Shall we assume JDK 1.8+ command line switches?
`protected boolean` `assumeJava10Plus()` Shall we assume JDK 10+ command line switches?
`protected boolean` `assumeJava11()` Deprecated. since Ant 1.10.7, use assumeJava1_1Plus, if necessary combined with !assumeJava1_2Plus
`protected boolean` `assumeJava12()` Deprecated. since Ant 1.10.7, use assumeJava1_2Plus, if necessary combined with !assumeJava1_3Plus
`protected boolean` `assumeJava13()` Deprecated. since Ant 1.10.7, use assumeJava1_3Plus, if necessary combined with !assumeJava1_4Plus
`protected boolean` `assumeJava14()` Deprecated. since Ant 1.10.7, use assumeJava1_4Plus, if necessary combined with !assumeJava1_5Plus
`protected boolean` `assumeJava15()` Deprecated. since Ant 1.10.7, use assumeJava1_5Plus, if necessary combined with !assumeJava1_6Plus
`protected boolean` `assumeJava16()` Deprecated. since Ant 1.10.7, use assumeJava1_6Plus, if necessary combined with !assumeJava1_7Plus
`protected boolean` `assumeJava17()` Deprecated. since Ant 1.10.7, use assumeJava1_7Plus, if necessary combined with !assumeJava1_8Plus
`protected boolean` `assumeJava18()` Deprecated. since Ant 1.10.7, use assumeJava1_8Plus, if necessary combined with !assumeJava9Plus
`protected boolean` `assumeJava19()` Deprecated. use #assumeJava9 instead
`protected boolean` `assumeJava9()` Deprecated. since Ant 1.10.7, use assumeJava9Plus, in the future if necessary combined with !assumeJava10Plus
`protected boolean` `assumeJava9Plus()` Shall we assume JDK 9+ command line switches?
`protected int` `executeExternalCompile​(java.lang.String[] args, int firstFileName)` Do the compile with the specified arguments.
`protected int` `executeExternalCompile​(java.lang.String[] args, int firstFileName, boolean quoteFiles)` Do the compile with the specified arguments.
`protected Path` `getBootClassPath()` Combines a user specified bootclasspath with the system bootclasspath taking build.sysclasspath into account.
`protected Path` `getCompileClasspath()` Builds the compilation classpath.
`Javac` `getJavac()` Get the Javac task instance associated with this compiler adapter
`protected Path` `getModulepath()` Builds the modulepath.
`protected Path` `getModulesourcepath()` Builds the modulesourcepath for multi module compilation.
`protected java.lang.String` `getNoDebugArgument()` The argument the compiler wants to see if the debug attribute has been set to false.
`protected Project` `getProject()` Get the project this compiler adapter was created in.
`java.lang.String[]` `getSupportedFileExtensions()` By default, only recognize files with a Java extension, but specialized compilers can recognize multiple kinds of files.
`protected Path` `getUpgrademodulepath()` Builds the upgrademodulepath.
`protected void` `logAndAddFilesToCompile​(Commandline cmd)` Logs the compilation parameters, adds the files to compile and logs the "niceSourceList"
`void` `setJavac​(Javac attributes)` Set the Javac instance which contains the configured compilation attributes.
`protected Commandline` `setupJavacCommand()` Set up the command line.
`protected Commandline` `setupJavacCommand​(boolean debugLevelCheck)` Does the command line argument processing for classic and adds the files to compile as well.
`protected Commandline` `setupJavacCommandlineSwitches​(Commandline cmd)` Get the command line arguments for the switches.
`protected Commandline` `setupJavacCommandlineSwitches​(Commandline cmd, boolean useDebugLevel)` Does the command line argument processing common to classic and modern.
`protected Commandline` `setupModernJavacCommand()` Does the command line argument processing for modern and adds the files to compile as well.
`protected Commandline` `setupModernJavacCommandlineSwitches​(Commandline cmd)` Does the command line argument processing for modern.

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

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

### Methods inherited from interface org.apache.tools.ant.taskdefs.compilers.CompilerAdapter

`execute`

### Field Detail

#### lSep

    @Deprecated
    protected static final java.lang.String lSep

Deprecated.

#### src

    protected Path src

#### destDir

    protected java.io.File destDir

#### encoding

    protected java.lang.String encoding

#### debug

    protected boolean debug

#### optimize

    protected boolean optimize

#### deprecation

    protected boolean deprecation

#### depend

    protected boolean depend

#### verbose

    protected boolean verbose

#### target

    protected java.lang.String target

#### release

    protected java.lang.String release

#### bootclasspath

    protected Path bootclasspath

#### extdirs

    protected Path extdirs

#### compileClasspath

    protected Path compileClasspath

#### modulepath

    protected Path modulepath

#### upgrademodulepath

    protected Path upgrademodulepath

#### compileSourcepath

    protected Path compileSourcepath

#### moduleSourcepath

    protected Path moduleSourcepath

#### project

    protected Project project

#### location

    protected Location location

#### includeAntRuntime

    protected boolean includeAntRuntime

#### includeJavaRuntime

    protected boolean includeJavaRuntime

#### memoryInitialSize

    protected java.lang.String memoryInitialSize

#### memoryMaximumSize

    protected java.lang.String memoryMaximumSize

#### compileList

    protected java.io.File[] compileList

#### attributes

    protected Javac attributes

### Constructor Detail

#### DefaultCompilerAdapter

    public DefaultCompilerAdapter()

### Method Detail

#### setJavac

    public void setJavac​(Javac attributes)

Set the Javac instance which contains the configured compilation attributes.

Specified by:
  `setJavac` in interface `CompilerAdapter`
Parameters:
  `attributes` - a configured Javac task.

#### getJavac

    public Javac getJavac()

Get the Javac task instance associated with this compiler adapter

Returns:
  the configured Javac task instance used by this adapter.

#### getSupportedFileExtensions

    public java.lang.String[] getSupportedFileExtensions()

By default, only recognize files with a Java extension, but specialized compilers can recognize multiple kinds of files.

Specified by:
  `getSupportedFileExtensions` in interface `CompilerAdapterExtension`
Returns:
  list of source file extensions recognized by this compiler adapter.

#### getProject

    protected Project getProject()

Get the project this compiler adapter was created in.

Returns:
  the owner project
Since:
  Ant 1.6

#### getCompileClasspath

    protected Path getCompileClasspath()

Builds the compilation classpath.

Returns:
  the compilation class path

#### getModulepath

    protected Path getModulepath()

Builds the modulepath.

Returns:
  the modulepath
Since:
  1.9.7

#### getUpgrademodulepath

    protected Path getUpgrademodulepath()

Builds the upgrademodulepath.

Returns:
  the upgrademodulepath
Since:
  1.9.7

#### getModulesourcepath

    protected Path getModulesourcepath()

Builds the modulesourcepath for multi module compilation.

Returns:
  the modulesourcepath
Since:
  1.9.7

#### setupJavacCommandlineSwitches

    protected Commandline setupJavacCommandlineSwitches​(Commandline cmd)

Get the command line arguments for the switches.

Parameters:
  `cmd` - the command line
Returns:
  the command line

#### setupJavacCommandlineSwitches

    protected Commandline setupJavacCommandlineSwitches​(Commandline cmd,
                                                        boolean useDebugLevel)

Does the command line argument processing common to classic and modern. Doesn't add the files to compile.

Parameters:
  `cmd` - the command line
  `useDebugLevel` - if true set set the debug level with the -g switch
Returns:
  the command line

#### setupModernJavacCommandlineSwitches

    protected Commandline setupModernJavacCommandlineSwitches​(Commandline cmd)

Does the command line argument processing for modern. Doesn't add the files to compile.

Parameters:
  `cmd` - the command line
Returns:
  the command line

#### setupModernJavacCommand

    protected Commandline setupModernJavacCommand()

Does the command line argument processing for modern and adds the files to compile as well.

Returns:
  the command line

#### setupJavacCommand

    protected Commandline setupJavacCommand()

Set up the command line.

Returns:
  the command line

#### setupJavacCommand

    protected Commandline setupJavacCommand​(boolean debugLevelCheck)

Does the command line argument processing for classic and adds the files to compile as well.

Parameters:
  `debugLevelCheck` - if true set the debug level with the -g switch
Returns:
  the command line

#### logAndAddFilesToCompile

    protected void logAndAddFilesToCompile​(Commandline cmd)

Logs the compilation parameters, adds the files to compile and logs the "niceSourceList"

Parameters:
  `cmd` - the command line

#### executeExternalCompile

    protected int executeExternalCompile​(java.lang.String[] args,
                                         int firstFileName)

Do the compile with the specified arguments.

Parameters:
  `args` - - arguments to pass to process on command line
  `firstFileName` - - index of the first source file in args, if the index is negative, no temporary file will ever be created, but this may hit the command line length limit on your system.
Returns:
  the exit code of the compilation

#### executeExternalCompile

    protected int executeExternalCompile​(java.lang.String[] args,
                                         int firstFileName,
                                         boolean quoteFiles)

Do the compile with the specified arguments.

The working directory if the executed process will be the project's base directory.

Parameters:
  `args` - - arguments to pass to process on command line
  `firstFileName` - - index of the first source file in args, if the index is negative, no temporary file will ever be created, but this may hit the command line length limit on your system.
  `quoteFiles` - - if set to true, filenames containing spaces will be quoted when they appear in the external file. This is necessary when running JDK 1.4's javac and probably others.
Returns:
  the exit code of the compilation
Since:
  Ant 1.6

#### addExtdirsToClasspath

    @Deprecated
    protected void addExtdirsToClasspath​(Path classpath)

Deprecated.
since 1.5.x. Use org.apache.tools.ant.types.Path#addExtdirs instead.
Add extdirs to classpath

Parameters:
  `classpath` - the classpath to use

#### addCurrentCompilerArgs

    protected void addCurrentCompilerArgs​(Commandline cmd)

Adds the command line arguments specific to the current implementation.

Parameters:
  `cmd` - the command line to use

#### assumeJava11

    @Deprecated
    protected boolean assumeJava11()

Deprecated.
since Ant 1.10.7, use assumeJava1_1Plus, if necessary combined with !assumeJava1_2Plus
Shall we assume JDK 1.1 command line switches?

Returns:
  true if jdk 1.1
Since:
  Ant 1.5

#### assumeJava1_1Plus

    protected boolean assumeJava1_1Plus()

Shall we assume JDK 1.1+ command line switches?

Returns:
  true if jdk 1.1 and above
Since:
  Ant 1.10.7

#### assumeJava12

    @Deprecated
    protected boolean assumeJava12()

Deprecated.
since Ant 1.10.7, use assumeJava1_2Plus, if necessary combined with !assumeJava1_3Plus
Shall we assume JDK 1.2 command line switches?

Returns:
  true if jdk 1.2
Since:
  Ant 1.5

#### assumeJava1_2Plus

    protected boolean assumeJava1_2Plus()

Shall we assume JDK 1.2+ command line switches?

Returns:
  true if jdk 1.2 and above
Since:
  Ant 1.10.7

#### assumeJava13

    @Deprecated
    protected boolean assumeJava13()

Deprecated.
since Ant 1.10.7, use assumeJava1_3Plus, if necessary combined with !assumeJava1_4Plus
Shall we assume JDK 1.3 command line switches?

Returns:
  true if jdk 1.3
Since:
  Ant 1.5

#### assumeJava1_3Plus

    protected boolean assumeJava1_3Plus()

Shall we assume JDK 1.3+ command line switches?

Returns:
  true if jdk 1.3 and above
Since:
  Ant 1.10.7

#### assumeJava14

    @Deprecated
    protected boolean assumeJava14()

Deprecated.
since Ant 1.10.7, use assumeJava1_4Plus, if necessary combined with !assumeJava1_5Plus
Shall we assume JDK 1.4 command line switches?

Returns:
  true if jdk 1.4
Since:
  Ant 1.6.3

#### assumeJava1_4Plus

    protected boolean assumeJava1_4Plus()

Shall we assume JDK 1.4+ command line switches?

Returns:
  true if jdk 1.4 and above
Since:
  Ant 1.10.7

#### assumeJava15

    @Deprecated
    protected boolean assumeJava15()

Deprecated.
since Ant 1.10.7, use assumeJava1_5Plus, if necessary combined with !assumeJava1_6Plus
Shall we assume JDK 1.5 command line switches?

Returns:
  true if JDK 1.5
Since:
  Ant 1.6.3

#### assumeJava1_5Plus

    protected boolean assumeJava1_5Plus()

Shall we assume JDK 1.5+ command line switches?

Returns:
  true if jdk 1.5 and above
Since:
  Ant 1.10.7

#### assumeJava16

    @Deprecated
    protected boolean assumeJava16()

Deprecated.
since Ant 1.10.7, use assumeJava1_6Plus, if necessary combined with !assumeJava1_7Plus
Shall we assume JDK 1.6 command line switches?

Returns:
  true if JDK 1.6
Since:
  Ant 1.7

#### assumeJava1_6Plus

    protected boolean assumeJava1_6Plus()

Shall we assume JDK 1.6+ command line switches?

Returns:
  true if jdk 1.6 and above
Since:
  Ant 1.10.7

#### assumeJava17

    @Deprecated
    protected boolean assumeJava17()

Deprecated.
since Ant 1.10.7, use assumeJava1_7Plus, if necessary combined with !assumeJava1_8Plus
Shall we assume JDK 1.7 command line switches?

Returns:
  true if JDK 1.7
Since:
  Ant 1.8.2

#### assumeJava1_7Plus

    protected boolean assumeJava1_7Plus()

Shall we assume JDK 1.7+ command line switches?

Returns:
  true if jdk 1.7 and above
Since:
  Ant 1.10.7

#### assumeJava18

    @Deprecated
    protected boolean assumeJava18()

Deprecated.
since Ant 1.10.7, use assumeJava1_8Plus, if necessary combined with !assumeJava9Plus
Shall we assume JDK 1.8 command line switches?

Returns:
  true if JDK 1.8
Since:
  Ant 1.8.3

#### assumeJava1_8Plus

    protected boolean assumeJava1_8Plus()

Shall we assume JDK 1.8+ command line switches?

Returns:
  true if jdk 1.8 and above
Since:
  Ant 1.10.7

#### assumeJava19

    @Deprecated
    protected boolean assumeJava19()

Deprecated.
use #assumeJava9 instead
Shall we assume JDK 9 command line switches?

Returns:
  true if JDK 9
Since:
  Ant 1.9.4

#### assumeJava9

    @Deprecated
    protected boolean assumeJava9()

Deprecated.
since Ant 1.10.7, use assumeJava9Plus, in the future if necessary combined with !assumeJava10Plus
Shall we assume JDK 9 command line switches?

Returns:
  true if JDK 9
Since:
  Ant 1.9.8

#### assumeJava9Plus

    protected boolean assumeJava9Plus()

Shall we assume JDK 9+ command line switches?

Returns:
  true if JDK 9+
Since:
  Ant 1.10.2

#### assumeJava10Plus

    protected boolean assumeJava10Plus()

Shall we assume JDK 10+ command line switches?

Returns:
  true if JDK 10+
Since:
  Ant 1.10.7

#### getBootClassPath

    protected Path getBootClassPath()

Combines a user specified bootclasspath with the system bootclasspath taking build.sysclasspath into account.

Returns:
  a non-null Path instance that combines the user specified and the system bootclasspath.

#### getNoDebugArgument

    protected java.lang.String getNoDebugArgument()

The argument the compiler wants to see if the debug attribute has been set to false.

A return value of `null` means no argument at all.

Returns:
  "-g:none" unless we expect to invoke a JDK 1.1 compiler.
Since:
  Ant 1.6.3