Interface ICompiler
-
- All Known Implementing Classes:
AbstractCompiler
,Compiler
,Compiler
public interface ICompiler
A simplified substitute for the javac tool.
-
-
Field Summary
Fields Modifier and Type Field Description static ResourceCreator
CREATE_NEXT_TO_SOURCE_FILE
Special value forsetClassFileCreator(ResourceCreator)
: Indicates that .class resources are to be created in the directory of the .java resource from which they are generated.static ResourceFinder
FIND_NEXT_TO_SOURCE_FILE
Special value forsetClassFileFinder(ResourceFinder)
.static java.io.File
NO_DESTINATION_DIRECTORY
Special value forsetDestinationDirectory(File, boolean)
's first parameter: Indicates that .class files are to be created in the directory of the .java file from which they are generated.
-
Method Summary
All Methods Instance Methods Abstract Methods Deprecated Methods Modifier and Type Method Description boolean
compile(java.io.File[] sourceFiles)
Reads a set of Java compilation units (a.k.a.void
compile(Resource[] sourceResources)
Seecompile(File[])
.void
setBootClassPath(java.io.File[] directoriesAndArchives)
Equivalent of--boot-class-path
.void
setCharacterEncoding(java.lang.String characterEncoding)
Deprecated.UsesetSourceCharset(Charset)
insteadvoid
setClassFileCreator(ResourceCreator classFileCreator)
ThisResourceCreator
is used to store generated.class
files.void
setClassFileFinder(ResourceFinder classFileFinder)
ThisResourceFinder
is used to check whether a.class
resource already exists and is younger than the.java
resource from which it was generated.void
setClassFileFinder(ResourceFinder classFileFinder, boolean rebuild)
Equivalent withsetClassFileFinder(rebuild ? ResourceFinder.EMPTY_RESOURCE_FINDER : classFileFinder)
.void
setClassPath(java.io.File[] directoriesAndArchives)
Equivalent of --class-path.void
setCompileErrorHandler(ErrorHandler errorHandler)
Installs anErrorHandler
which is invoked during compilation on each error.void
setDebugLines(boolean value)
Equivalent of-g:lines
.void
setDebugSource(boolean value)
Equivalent of-g:source
.void
setDebugVars(boolean value)
Equivalent of-g:vars
.void
setDestinationDirectory(java.io.File destinationDirectory, boolean rebuild)
Equivalent of -d and-rebuild
.void
setEncoding(java.nio.charset.Charset encoding)
The equivalent of JAVA's "-encoding
" command line option.void
setExtensionDirectories(java.io.File[] directories)
Equivalent of-extdirs
.void
setSourceCharset(java.nio.charset.Charset charset)
Same assetEncoding(Charset)
, but with a more precise name.void
setSourceFinder(ResourceFinder sourceFinder)
Finds more.java
resources that need to be compiled, i.e. implements JAVAC's-sourcepath
option.void
setSourcePath(java.io.File[] directoriesAndArchives)
Equivalent of--source-path
.void
setSourceVersion(int version)
Specifies the version of source code accepted, in analogy with JAVAC's-source
command line option.void
setTargetVersion(int version)
Generates class files that target a specified release of the virtual machine, in analogy with JAVAC's-target
command line option.void
setVerbose(boolean verbose)
Equivalent of-verbose
.void
setWarningHandler(WarningHandler warningHandler)
By default, warnings are discarded, but an application my install a customWarningHandler
.
-
-
-
Field Detail
-
NO_DESTINATION_DIRECTORY
@Nullable static final java.io.File NO_DESTINATION_DIRECTORY
Special value forsetDestinationDirectory(File, boolean)
's first parameter: Indicates that .class files are to be created in the directory of the .java file from which they are generated.
-
FIND_NEXT_TO_SOURCE_FILE
static final ResourceFinder FIND_NEXT_TO_SOURCE_FILE
Special value forsetClassFileFinder(ResourceFinder)
.- See Also:
setClassFileFinder(ResourceFinder)
-
CREATE_NEXT_TO_SOURCE_FILE
static final ResourceCreator CREATE_NEXT_TO_SOURCE_FILE
Special value forsetClassFileCreator(ResourceCreator)
: Indicates that .class resources are to be created in the directory of the .java resource from which they are generated.
-
-
Method Detail
-
setEncoding
void setEncoding(java.nio.charset.Charset encoding)
The equivalent of JAVA's "-encoding
" command line option.- See Also:
setSourceCharset(Charset)
-
setSourceCharset
void setSourceCharset(java.nio.charset.Charset charset)
Same assetEncoding(Charset)
, but with a more precise name.
-
setCharacterEncoding
@Deprecated void setCharacterEncoding(@Nullable java.lang.String characterEncoding)
Deprecated.UsesetSourceCharset(Charset)
instead
-
setDebugLines
void setDebugLines(boolean value)
Equivalent of-g:lines
.
-
setDebugVars
void setDebugVars(boolean value)
Equivalent of-g:vars
.
-
setDebugSource
void setDebugSource(boolean value)
Equivalent of-g:source
.
-
setSourceVersion
void setSourceVersion(int version)
Specifies the version of source code accepted, in analogy with JAVAC's-source
command line option. May be ignored by an implementation (e.g. thejanino
implementation always accepts the language features as described on the home page). Allowed values, and the default value, depend on the implementation.-1
means to use a default version.
-
setTargetVersion
void setTargetVersion(int version)
Generates class files that target a specified release of the virtual machine, in analogy with JAVAC's-target
command line option. Allowed values depend on the implementation. The default value also depends on the implementation. The only invariant is that the generated class files are suitable for the currently executing JVM.-1
means to use a default version.
-
setSourceFinder
void setSourceFinder(ResourceFinder sourceFinder)
Finds more.java
resources that need to be compiled, i.e. implements JAVAC's-sourcepath
option.
-
setSourcePath
void setSourcePath(java.io.File[] directoriesAndArchives)
Equivalent of--source-path
.Equivalent with
setSourceFinder(new PathResourceFinder(directoriesAndArchives))
.
-
setBootClassPath
void setBootClassPath(java.io.File[] directoriesAndArchives)
Equivalent of--boot-class-path
.
-
setExtensionDirectories
void setExtensionDirectories(java.io.File[] directories)
Equivalent of-extdirs
.
-
setClassPath
void setClassPath(java.io.File[] directoriesAndArchives)
Equivalent of --class-path.
-
setDestinationDirectory
void setDestinationDirectory(@Nullable java.io.File destinationDirectory, boolean rebuild)
Equivalent of -d and-rebuild
.Overrides any previously configured
class file finder
andclass file creator
.- Parameters:
destinationDirectory
-NO_DESTINATION_DIRECTORY
means "create .class resources in the directory of the .java resource from which they are generated"- See Also:
NO_DESTINATION_DIRECTORY
,setClassFileFinder(ResourceFinder)
,setClassFileCreator(ResourceCreator)
-
setClassFileFinder
void setClassFileFinder(ResourceFinder classFileFinder, boolean rebuild)
Equivalent withsetClassFileFinder(rebuild ? ResourceFinder.EMPTY_RESOURCE_FINDER : classFileFinder)
.
-
setClassFileFinder
void setClassFileFinder(ResourceFinder classFileFinder)
ThisResourceFinder
is used to check whether a.class
resource already exists and is younger than the.java
resource from which it was generated.If it is impossible to check whether an already-compiled class file exists, or if you want to enforce recompilation, pass
ResourceFinder.EMPTY_RESOURCE_FINDER
as the classFileFinder.The default is, as for JAVAC,
FIND_NEXT_TO_SOURCE_FILE
.- Parameters:
classFileFinder
- Special valueFIND_NEXT_TO_SOURCE_FILE
means ".class file is next to its source file, not in the destination directory"- See Also:
FIND_NEXT_TO_SOURCE_FILE
-
setClassFileCreator
void setClassFileCreator(ResourceCreator classFileCreator)
ThisResourceCreator
is used to store generated.class
files.The default is, as for JAVAC,
CREATE_NEXT_TO_SOURCE_FILE
.- Parameters:
classFileCreator
- Special valueCREATE_NEXT_TO_SOURCE_FILE
means "create .class file next to its source file, not in the destination directory"- See Also:
CREATE_NEXT_TO_SOURCE_FILE
-
setVerbose
void setVerbose(boolean verbose)
Equivalent of-verbose
.
-
compile
boolean compile(java.io.File[] sourceFiles) throws CompileException, java.io.IOException
Reads a set of Java compilation units (a.k.a. "source files") from the file system, compiles them into a set of "class files" and stores these in the file system. Additional source files are parsed and compiled on demand through the "source path" set of directories.For example, if the source path comprises the directories "A/B" and "../C", then the source file for class "com.acme.Main" is searched in
- A/B/com/acme/Main.java
- ../C/com/acme/Main.java
Notice that it does make a difference whether you pass multiple source files to
compile(File[])
or if you invokecompile(File[])
multiply: In the former case, the source files may contain arbitrary references among each other (even circular ones). In the latter case, only the source files on the source path may contain circular references, not the sourceFiles.This method must be called exactly once after object construction.
Compile errors are reported as described at
setCompileErrorHandler(ErrorHandler)
.- Parameters:
sourceFiles
- Contain the compilation units to compile- Returns:
true
for backwards compatibility (return value can safely be ignored)- Throws:
CompileException
- Fatal compilation error, or theCompileException
thrown be the installed compile error handlerjava.io.IOException
- Occurred when reading from the sourceFiles
- A/B/com/acme/Main.java
-
compile
void compile(Resource[] sourceResources) throws CompileException, java.io.IOException
Seecompile(File[])
.- Parameters:
sourceResources
- Contain the compilation units to compile- Throws:
CompileException
java.io.IOException
-
setCompileErrorHandler
void setCompileErrorHandler(@Nullable ErrorHandler errorHandler)
Installs anErrorHandler
which is invoked during compilation on each error. (By default, the compilation throws aCompileException
on the first error and terminates.)If the given
ErrorHandler
throws aCompileException
, then the compilation terminates and the exception is propagated.If the given
ErrorHandler
does not throw aCompileException
but completes normally, then the compilation may or may not continue, depending on the error. Iff the compilation of a compilation unit completes normally but errors were reported, then it will throw aCompileException
indicating the number of errors.In other words: The
ErrorHandler
may throw aCompileException
or not, but the compilation will definitely throw aCompileException
if one or more compile errors have occurred.- Parameters:
errorHandler
-null
to restore the default behavior (throwing aCompileException
)
-
setWarningHandler
void setWarningHandler(WarningHandler warningHandler)
By default, warnings are discarded, but an application my install a customWarningHandler
.- Parameters:
warningHandler
-null
to indicate that no warnings be issued
-
-