Class AbstractCompiler
- All Implemented Interfaces:
ICompiler
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected File[]This is always non-nullfor JVMs that support BOOTCLASSPATH (1.0-1.8), and this is alwaysnullfor JVMs that don't (9+).protected ResourceCreatorImplements the "write side" of the JAVAC-doption.protected ResourceFinderImplements the "read side" of the JAVAC-doption.protected File[]The classpath of the currently executing JRE.protected ErrorHandlerStores the value configured withsetCompileErrorHandler(ErrorHandler).protected booleanImplements the JAVAC-g:linesoption.protected booleanImplements the JAVAC-g:sourceoption.protected booleanImplements the JAVAC-g:varsoption.private static final booleanprivate static final Patternprotected File[]The list of extension directories of the currently executing JRE.Implements the JAVAC-encodingoption.protected ResourceFinderImplements the JAVAC-sourcepathoption.protected intprotected intprotected WarningHandlerStores the value configured withsetWarningHandler(WarningHandler).Fields inherited from interface ICompiler
CREATE_NEXT_TO_SOURCE_FILE, FIND_NEXT_TO_SOURCE_FILE, NO_DESTINATION_DIRECTORY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal booleanReads a set of Java compilation units (a.k.a.voidsetBootClassPath(File[] directoriesAndArchives) Equivalent of--boot-class-path.final voidsetCharacterEncoding(String characterEncoding) final voidsetClassFileCreator(ResourceCreator classFileCreator) ThisResourceCreatoris used to store generated.classfiles.voidsetClassFileFinder(ResourceFinder classFileFinder) ThisResourceFinderis used to check whether a.classresource already exists and is younger than the.javaresource from which it was generated.final voidsetClassFileFinder(ResourceFinder destination, boolean rebuild) Equivalent withsetClassFileFinder(rebuild ? ResourceFinder.EMPTY_RESOURCE_FINDER : classFileFinder).voidsetClassPath(File[] directoriesAndArchives) Equivalent of --class-path.voidsetCompileErrorHandler(ErrorHandler compileErrorHandler) Installs anErrorHandlerwhich is invoked during compilation on each error.voidsetDebugLines(boolean value) Equivalent of-g:lines.voidsetDebugSource(boolean value) Equivalent of-g:source.voidsetDebugVars(boolean value) Equivalent of-g:vars.final voidsetDestinationDirectory(File destinationDirectory, boolean rebuild) Equivalent of -d and-rebuild.final voidsetEncoding(Charset encoding) The equivalent of JAVA's "-encoding" command line option.voidsetExtensionDirectories(File[] directories) Equivalent of-extdirs.voidsetSourceCharset(Charset charset) Same asICompiler.setEncoding(Charset), but with a more precise name.voidsetSourceFinder(ResourceFinder sourceFinder) Finds more.javaresources that need to be compiled, i.e.voidsetSourcePath(File[] directoriesAndArchives) Equivalent of--source-path.voidsetSourceVersion(int version) Specifies the version of source code accepted, in analogy with JAVAC's-sourcecommand line option.voidsetTargetVersion(int version) Generates class files that target a specified release of the virtual machine, in analogy with JAVAC's-targetcommand line option.voidsetWarningHandler(WarningHandler warningHandler) By default, warnings are discarded, but an application my install a customWarningHandler.Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ICompiler
compile, setVerbose
-
Field Details
-
disassembleClassFilesToStdout
private static final boolean disassembleClassFilesToStdout -
disassembleClassNames
-
sourceFinder
Implements the JAVAC-sourcepathoption. -
classFileFinder
Implements the "read side" of the JAVAC-doption. -
classFileCreator
Implements the "write side" of the JAVAC-doption. -
sourceCharset
Implements the JAVAC-encodingoption. -
debugSource
protected boolean debugSourceImplements the JAVAC-g:sourceoption. -
debugLines
protected boolean debugLinesImplements the JAVAC-g:linesoption. -
debugVars
protected boolean debugVarsImplements the JAVAC-g:varsoption. -
sourceVersion
protected int sourceVersion -
targetVersion
protected int targetVersion -
extensionDirectories
The list of extension directories of the currently executing JRE. Empty for Java 9+, because the system property "java.ext.dirs" is not set in JRE 9+. -
classPath
The classpath of the currently executing JRE. -
bootClassPath
-
compileErrorHandler
Stores the value configured withsetCompileErrorHandler(ErrorHandler). -
warningHandler
Stores the value configured withsetWarningHandler(WarningHandler).
-
-
Constructor Details
-
AbstractCompiler
public AbstractCompiler()
-
-
Method Details
-
setSourceFinder
Description copied from interface:ICompilerFinds more.javaresources that need to be compiled, i.e. implements JAVAC's-sourcepathoption.- Specified by:
setSourceFinderin interfaceICompiler
-
setClassFileFinder
Description copied from interface:ICompilerEquivalent withsetClassFileFinder(rebuild ? ResourceFinder.EMPTY_RESOURCE_FINDER : classFileFinder).- Specified by:
setClassFileFinderin interfaceICompiler
-
setClassFileFinder
Description copied from interface:ICompilerThisResourceFinderis used to check whether a.classresource already exists and is younger than the.javaresource 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_FINDERas the classFileFinder.The default is, as for JAVAC,
ICompiler.FIND_NEXT_TO_SOURCE_FILE.- Specified by:
setClassFileFinderin interfaceICompiler- Parameters:
classFileFinder- Special valueICompiler.FIND_NEXT_TO_SOURCE_FILEmeans ".class file is next to its source file, not in the destination directory"- See Also:
-
setClassFileCreator
Description copied from interface:ICompilerThisResourceCreatoris used to store generated.classfiles.The default is, as for JAVAC,
ICompiler.CREATE_NEXT_TO_SOURCE_FILE.- Specified by:
setClassFileCreatorin interfaceICompiler- Parameters:
classFileCreator- Stores the generated class files (a.k.a. "-d"); special valueICompiler.CREATE_NEXT_TO_SOURCE_FILEmeans "create each .class file in the same directory as its source file"- See Also:
-
compile
Description copied from interface:ICompilerReads 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
ICompiler.compile(File[])or if you invokeICompiler.compile(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
ICompiler.setCompileErrorHandler(ErrorHandler).- Specified by:
compilein interfaceICompiler- Parameters:
sourceFiles- Contain the compilation units to compile- Returns:
truefor backwards compatibility (return value can safely be ignored)- Throws:
CompileException- Fatal compilation error, or theCompileExceptionthrown be the installed compile error handlerIOException- Occurred when reading from the sourceFiles
- A/B/com/acme/Main.java
-
setEncoding
Description copied from interface:ICompilerThe equivalent of JAVA's "-encoding" command line option.- Specified by:
setEncodingin interfaceICompiler- See Also:
-
setSourceCharset
Description copied from interface:ICompilerSame asICompiler.setEncoding(Charset), but with a more precise name.- Specified by:
setSourceCharsetin interfaceICompiler
-
setCharacterEncoding
- Specified by:
setCharacterEncodingin interfaceICompiler
-
setDebugLines
public void setDebugLines(boolean value) Description copied from interface:ICompilerEquivalent of-g:lines.- Specified by:
setDebugLinesin interfaceICompiler
-
setDebugVars
public void setDebugVars(boolean value) Description copied from interface:ICompilerEquivalent of-g:vars.- Specified by:
setDebugVarsin interfaceICompiler
-
setDebugSource
public void setDebugSource(boolean value) Description copied from interface:ICompilerEquivalent of-g:source.- Specified by:
setDebugSourcein interfaceICompiler
-
setSourceVersion
public void setSourceVersion(int version) Description copied from interface:ICompilerSpecifies the version of source code accepted, in analogy with JAVAC's-sourcecommand line option. May be ignored by an implementation (e.g. thejaninoimplementation always accepts the language features as described on the home page). Allowed values, and the default value, depend on the implementation.-1means to use a default version.- Specified by:
setSourceVersionin interfaceICompiler
-
setTargetVersion
public void setTargetVersion(int version) Description copied from interface:ICompilerGenerates class files that target a specified release of the virtual machine, in analogy with JAVAC's-targetcommand 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.-1means to use a default version.- Specified by:
setTargetVersionin interfaceICompiler
-
setSourcePath
Description copied from interface:ICompilerEquivalent of--source-path.Equivalent with
setSourceFinder(new PathResourceFinder(directoriesAndArchives)).- Specified by:
setSourcePathin interfaceICompiler
-
setBootClassPath
Description copied from interface:ICompilerEquivalent of--boot-class-path.- Specified by:
setBootClassPathin interfaceICompiler
-
setExtensionDirectories
Description copied from interface:ICompilerEquivalent of-extdirs.- Specified by:
setExtensionDirectoriesin interfaceICompiler
-
setClassPath
Description copied from interface:ICompilerEquivalent of --class-path.- Specified by:
setClassPathin interfaceICompiler
-
setDestinationDirectory
Description copied from interface:ICompilerEquivalent of -d and-rebuild.Overrides any previously configured
class file finderandclass file creator.- Specified by:
setDestinationDirectoryin interfaceICompiler- Parameters:
destinationDirectory-ICompiler.NO_DESTINATION_DIRECTORYmeans "create .class resources in the directory of the .java resource from which they are generated"- See Also:
-
setCompileErrorHandler
Description copied from interface:ICompilerInstalls anErrorHandlerwhich is invoked during compilation on each error. (By default, the compilation throws aCompileExceptionon the first error and terminates.)If the given
ErrorHandlerthrows aCompileException, then the compilation terminates and the exception is propagated.If the given
ErrorHandlerdoes not throw aCompileExceptionbut 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 aCompileExceptionindicating the number of errors.In other words: The
ErrorHandlermay throw aCompileExceptionor not, but the compilation will definitely throw aCompileExceptionif one or more compile errors have occurred.- Specified by:
setCompileErrorHandlerin interfaceICompiler- Parameters:
compileErrorHandler-nullto restore the default behavior (throwing aCompileException)
-
setWarningHandler
Description copied from interface:ICompilerBy default, warnings are discarded, but an application my install a customWarningHandler.- Specified by:
setWarningHandlerin interfaceICompiler- Parameters:
warningHandler-nullto indicate that no warnings be issued
-