CompilerAdapterFactory (Apache Ant API)
Description: declaration: package: org.apache.tools.ant.taskdefs.compilers, class: CompilerAdapterFactory

# Class CompilerAdapterFactory

java.lang.Object
org.apache.tools.ant.taskdefs.compilers.CompilerAdapterFactory

public final class CompilerAdapterFactory extends Object
Creates the necessary compiler adapter, given basic criteria.

Since:
  Ant 1.3

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `COMPILER_CLASSIC`
  `static final String`
  `COMPILER_EXTJAVAC`
  `static final String`
  `COMPILER_EXTJAVAC_CLASSNAME`
  `static final String`
  `COMPILER_GCJ`
  `static final String`
  `COMPILER_JAVAC_1_1`
  `static final String`
  `COMPILER_JAVAC_1_2`
  `static final String`
  `COMPILER_JAVAC_1_3`
  `static final String`
  `COMPILER_JAVAC_1_4`
  `static final String`
  `COMPILER_JAVAC_1_5`
  `static final String`
  `COMPILER_JAVAC_1_6`
  `static final String`
  `COMPILER_JAVAC_1_7`
  `static final String`
  `COMPILER_JAVAC_1_8`
  `static final String`
  `COMPILER_JAVAC_10_PLUS`
  `static final String`
  `COMPILER_JAVAC_9`
  `static final String`
  `COMPILER_JAVAC_9_ALIAS`
  `static final String`
  `COMPILER_JIKES`
  `static final String`
  `COMPILER_JVC`
  `static final String`
  `COMPILER_JVC_ALIAS`
  `static final String`
  `COMPILER_KJC`
  `static final String`
  `COMPILER_MODERN`
  `static final String`
  `COMPILER_MODERN_CLASSNAME`
  `static final String`
  `COMPILER_SYMANTEC`
  `static final String`
  `COMPILER_SYMANTEC_ALIAS`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static CompilerAdapter`
  `getCompiler(String compilerType, Task task)`
  Based on the parameter passed in, this method creates the necessary factory desired.
  `static CompilerAdapter`
  `getCompiler(String compilerType, Task task, Path classpath)`
  Based on the parameter passed in, this method creates the necessary factory desired.
  `static boolean`
  `isClassicJdkCompiler(String compilerName)`
  Does the compiler correspond to "classic"?
  `static boolean`
  `isForkedJavac(String compilerName)`
  Is the compiler implementation a forked jdk compiler?
  `static boolean`
  `isJdkCompiler(String compilerName)`
  Is the compiler implementation a jdk compiler?
  `static boolean`
  `isJdkCompilerNickname(String compilerName)`
  Is the compiler implementation a jdk compiler without specified version?
  `static boolean`
  `isModernJdkCompiler(String compilerName)`
  Does the compiler correspond to "modern"?

  ### Methods inherited from class Object

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

- ## Field Details

  - ### COMPILER_JIKES

    public static final String COMPILER_JIKES
    See Also:
      - Constant Field Values

  - ### COMPILER_GCJ

    public static final String COMPILER_GCJ
    See Also:
      - Constant Field Values

  - ### COMPILER_SYMANTEC_ALIAS

    public static final String COMPILER_SYMANTEC_ALIAS
    See Also:
      - Constant Field Values

  - ### COMPILER_SYMANTEC

    public static final String COMPILER_SYMANTEC
    See Also:
      - Constant Field Values

  - ### COMPILER_JVC_ALIAS

    public static final String COMPILER_JVC_ALIAS
    See Also:
      - Constant Field Values

  - ### COMPILER_JVC

    public static final String COMPILER_JVC
    See Also:
      - Constant Field Values

  - ### COMPILER_KJC

    public static final String COMPILER_KJC
    See Also:
      - Constant Field Values

  - ### COMPILER_JAVAC_1_1

    public static final String COMPILER_JAVAC_1_1
    See Also:
      - Constant Field Values

  - ### COMPILER_JAVAC_1_2

    public static final String COMPILER_JAVAC_1_2
    See Also:
      - Constant Field Values

  - ### COMPILER_JAVAC_1_3

    public static final String COMPILER_JAVAC_1_3
    See Also:
      - Constant Field Values

  - ### COMPILER_JAVAC_1_4

    public static final String COMPILER_JAVAC_1_4
    See Also:
      - Constant Field Values

  - ### COMPILER_JAVAC_1_5

    public static final String COMPILER_JAVAC_1_5
    See Also:
      - Constant Field Values

  - ### COMPILER_JAVAC_1_6

    public static final String COMPILER_JAVAC_1_6
    See Also:
      - Constant Field Values

  - ### COMPILER_JAVAC_1_7

    public static final String COMPILER_JAVAC_1_7
    See Also:
      - Constant Field Values

  - ### COMPILER_JAVAC_1_8

    public static final String COMPILER_JAVAC_1_8
    See Also:
      - Constant Field Values

  - ### COMPILER_JAVAC_9_ALIAS

    public static final String COMPILER_JAVAC_9_ALIAS
    See Also:
      - Constant Field Values

  - ### COMPILER_JAVAC_9

    public static final String COMPILER_JAVAC_9
    See Also:
      - Constant Field Values

  - ### COMPILER_JAVAC_10_PLUS

    public static final String COMPILER_JAVAC_10_PLUS
    See Also:
      - Constant Field Values

  - ### COMPILER_CLASSIC

    public static final String COMPILER_CLASSIC
    See Also:
      - Constant Field Values

  - ### COMPILER_MODERN

    public static final String COMPILER_MODERN
    See Also:
      - Constant Field Values

  - ### COMPILER_EXTJAVAC

    public static final String COMPILER_EXTJAVAC
    See Also:
      - Constant Field Values

  - ### COMPILER_MODERN_CLASSNAME

    public static final String COMPILER_MODERN_CLASSNAME

  - ### COMPILER_EXTJAVAC_CLASSNAME

    public static final String COMPILER_EXTJAVAC_CLASSNAME

- ## Method Details

  - ### getCompiler

    public static CompilerAdapter getCompiler(String compilerType, Task task) throws BuildException
    Based on the parameter passed in, this method creates the necessary factory desired. The current mapping for compiler names are as follows:
    - jikes = jikes compiler
    - classic, javac1.1, javac1.2 = the standard compiler from JDK 1.1/1.2
    - modern, javac1.3, javac1.4, javac1.5 = the compiler of JDK 1.3+
    - jvc, microsoft = the command line compiler from Microsoft's SDK for Java / Visual J++
    - kjc = the kopi compiler
    - gcj = the gcj compiler from gcc
    - sj, symantec = the Symantec Java compiler
    - a fully qualified classname = the name of a compiler adapter
    Parameters:
      `compilerType` - either the name of the desired compiler, or the full classname of the compiler's adapter.
      `task` - a task to log through.
    Returns:
      the compiler adapter
    Throws:
      `BuildException` - if the compiler type could not be resolved into a compiler adapter.

  - ### getCompiler

    public static CompilerAdapter getCompiler(String compilerType, Task task, Path classpath) throws BuildException
    Based on the parameter passed in, this method creates the necessary factory desired. The current mapping for compiler names are as follows:
    - jikes = jikes compiler
    - classic, javac1.1, javac1.2 = the standard compiler from JDK 1.1/1.2
    - modern, javac1.3, javac1.4, javac1.5 = the compiler of JDK 1.3+
    - jvc, microsoft = the command line compiler from Microsoft's SDK for Java / Visual J++
    - kjc = the kopi compiler
    - gcj = the gcj compiler from gcc
    - sj, symantec = the Symantec Java compiler
    - a fully qualified classname = the name of a compiler adapter
    Parameters:
      `compilerType` - either the name of the desired compiler, or the full classname of the compiler's adapter.
      `task` - a task to log through.
      `classpath` - the classpath to use when looking up an adapter class
    Returns:
      the compiler adapter
    Throws:
      `BuildException` - if the compiler type could not be resolved into a compiler adapter.
    Since:
      Ant 1.8.0

  - ### isForkedJavac

    public static boolean isForkedJavac(String compilerName)
    Is the compiler implementation a forked jdk compiler?
    Parameters:
      `compilerImpl` - the name of the compiler implementation
    Since:
      1.10.12

  - ### isJdkCompiler

    public static boolean isJdkCompiler(String compilerName)
    Is the compiler implementation a jdk compiler?
    Parameters:
      `compilerImpl` - the name of the compiler implementation
    Since:
      1.10.12

  - ### isJdkCompilerNickname

    public static boolean isJdkCompilerNickname(String compilerName)
    Is the compiler implementation a jdk compiler without specified version?
    Parameters:
      `compilerImpl` - the name of the compiler implementation
    Since:
      1.10.12

  - ### isClassicJdkCompiler

    public static boolean isClassicJdkCompiler(String compilerName)
    Does the compiler correspond to "classic"?
    Parameters:
      `compilerImpl` - the name of the compiler implementation
    Since:
      1.10.12

  - ### isModernJdkCompiler

    public static boolean isModernJdkCompiler(String compilerName)
    Does the compiler correspond to "modern"?
    Parameters:
      `compilerImpl` - the name of the compiler implementation
    Since:
      1.10.12