public class Compiler extends Object
Usage:
java org.codehaus.janino.Compiler \
[ -d destination-dir ] \
[ -sourcepath dirlist ] \
[ -classpath dirlist ] \
[ -extdirs dirlist ] \
[ -bootclasspath dirlist ] \
[ -encoding encoding ] \
[ -verbose ] \
[ -g:none ] \
[ -g:{source,lines,vars} ] \
[ -warn:pattern-list ] \
source-file ...
java org.codehaus.janino.Compiler -help
| Modifier and Type | Class and Description |
|---|---|
static class |
Compiler.SimpleWarningHandler
Prints warnings to STDERR.
|
| Modifier and Type | Field and Description |
|---|---|
static ResourceCreator |
CREATE_NEXT_TO_SOURCE_FILE
Special value for "classFileResourceCreator".
|
static StringPattern[] |
DEFAULT_WARNING_HANDLE_PATTERNS
The default value for the warningHandlerPatterns parameter of
Compiler(File[], File[],
File[], File[], File, String, boolean, boolean, boolean, boolean, StringPattern[], boolean). |
static ResourceFinder |
FIND_NEXT_TO_SOURCE_FILE
Special value for "classFileResourceFinder".
|
static File |
NO_DESTINATION_DIRECTORY
Backwards compatibility -- previously, "null" was officially documented.
|
| Constructor and Description |
|---|
Compiler(File[] optionalSourcePath,
File[] classPath,
File[] optionalExtDirs,
File[] optionalBootClassPath,
File destinationDirectory,
String optionalCharacterEncoding,
boolean verbose,
boolean debugSource,
boolean debugLines,
boolean debugVars,
StringPattern[] warningHandlePatterns,
boolean rebuild)
Initializes a Java compiler with the given parameters.
|
Compiler(ResourceFinder sourceFinder,
IClassLoader iClassLoader,
ResourceFinder classFileFinder,
ResourceCreator classFileCreator,
String optionalCharacterEncoding,
boolean verbose,
boolean debugSource,
boolean debugLines,
boolean debugVars,
WarningHandler optionalWarningHandler)
To mimic the behavior of JAVAC with a missing "-d" command line option, pass
FIND_NEXT_TO_SOURCE_FILE
as the classFileResourceFinder and CREATE_NEXT_TO_SOURCE_FILE as the
classFileResourceCreator. |
| Modifier and Type | Method and Description |
|---|---|
boolean |
compile(File[] sourceFiles)
Reads a set of Java compilation units (a.k.a.
|
boolean |
compile(Resource[] sourceResources)
See
compile(File[]). |
static File |
getClassFile(String className,
File sourceFile,
File optionalDestinationDirectory)
Constructs the name of a file that could store the byte code of the class with the given name.
|
static void |
main(String[] args)
Command line interface.
|
void |
setCompileErrorHandler(ErrorHandler optionalCompileErrorHandler)
Installs a custom
ErrorHandler. |
void |
setWarningHandler(WarningHandler optionalWarningHandler)
By default, warnings are discarded, but an application my install a custom
WarningHandler. |
void |
storeClassFile(ClassFile classFile,
File sourceFile)
Stores the byte code of this
ClassFile in the file system. |
@Nullable public static final ResourceFinder FIND_NEXT_TO_SOURCE_FILE
@Nullable public static final ResourceCreator CREATE_NEXT_TO_SOURCE_FILE
@Nullable public static final File NO_DESTINATION_DIRECTORY
public static final StringPattern[] DEFAULT_WARNING_HANDLE_PATTERNS
Compiler(File[], File[],
File[], File[], File, String, boolean, boolean, boolean, boolean, StringPattern[], boolean).public Compiler(@Nullable File[] optionalSourcePath, File[] classPath, @Nullable File[] optionalExtDirs, @Nullable File[] optionalBootClassPath, @Nullable File destinationDirectory, @Nullable String optionalCharacterEncoding, boolean verbose, boolean debugSource, boolean debugLines, boolean debugVars, StringPattern[] warningHandlePatterns, boolean rebuild)
Classes are searched in the following order:
null: Through the system class loader of the JVM
that runs JANINO
null: Through the
optionalBootClassPath
null: Through the optionalExtDirs
null: Through source files found on the
classPath
null: Through source files found on the sourcePath
The file name of a class file that represents class "pkg.Example" is determined as follows:
NO_DESTINATION_DIRECTORY:
optionalDestinationDirectory/pkg/Example.class
NO_DESTINATION_DIRECTORY: dir1/dir2/Example.class (Assuming that the file name of the source file that declares the class was dir1/dir2/Any.java.)
DEFAULT_WARNING_HANDLE_PATTERNSpublic Compiler(ResourceFinder sourceFinder, IClassLoader iClassLoader, @Nullable ResourceFinder classFileFinder, @Nullable ResourceCreator classFileCreator, @Nullable String optionalCharacterEncoding, boolean verbose, boolean debugSource, boolean debugLines, boolean debugVars, @Nullable WarningHandler optionalWarningHandler)
FIND_NEXT_TO_SOURCE_FILE
as the classFileResourceFinder and CREATE_NEXT_TO_SOURCE_FILE as the
classFileResourceCreator.
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 classFileResourceFinder.
sourceFinder - Finds extra Java compilation units that need to be compiled (a.k.a. "-sourcepath")iClassLoader - Loads auxiliary IClasses (a.k.a. "-classpath"), e.g. new
ClassLoaderIClassLoader(ClassLoader)classFileFinder - Where to look for up-to-date class files that need not be compiled (a.k.a. "-d")classFileCreator - Used to store generated class files (a.k.a. "-d")optionalWarningHandler - Used to issue warningspublic static void main(String[] args)
public void setCompileErrorHandler(@Nullable ErrorHandler optionalCompileErrorHandler)
ErrorHandler. The default ErrorHandler prints the first 20 compile errors to
System.err and then throws a CompileException.
Passing null restores the default ErrorHandler.
Notice that scan and parse errors are not redirected to this ErrorHandler, instead, they
cause a CompileException to be thrown. Also, the Compiler may choose to throw CompileExceptions in certain, fatal compile error situations, even if an ErrorHandler is installed.
In other words: In situations where compilation can reasonably continue after a compile error, the ErrorHandler is called; all other error conditions cause a CompileException to be thrown.
public void setWarningHandler(@Nullable WarningHandler optionalWarningHandler)
WarningHandler.optionalWarningHandler - null to indicate that no warnings be issuedpublic boolean compile(File[] sourceFiles) throws CompileException, IOException
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
Notice that it does make a difference whether you pass multiple source files to compile(File[]) or if
you invoke 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 setCompileErrorHandler(ErrorHandler).
sourceFiles - Contain the compilation units to compiletrue for backwards compatibility (return value can safely be ignored)CompileException - Fatal compilation error, or the CompileException thrown be the installed
compile error handlerIOException - Occurred when reading from the sourceFilespublic boolean compile(Resource[] sourceResources) throws CompileException, IOException
compile(File[]).sourceResources - Contain the compilation units to compiletrue for backwards compatibility (return value can safely be ignored)CompileExceptionIOExceptionpublic static File getClassFile(String className, File sourceFile, @Nullable File optionalDestinationDirectory)
If optionalDestinationDirectory is non-null, the returned path is the optionalDestinationDirectory plus the package of the class (with dots replaced with file separators) plus the class name plus ".class". Example: "destdir/pkg1/pkg2/Outer$Inner.class"
If optionalDestinationDirectory is null, the returned path is the directory of the sourceFile plus the class name plus ".class". Example: "srcdir/Outer$Inner.class"
className - E.g. "pkg1.pkg2.Outer$Inner"sourceFile - E.g. "srcdir/Outer.java"optionalDestinationDirectory - E.g. "destdir"public void storeClassFile(ClassFile classFile, File sourceFile) throws IOException
ClassFile in the file system. Directories are created as necessary.classFile - sourceFile - Required to compute class file path if no destination directory givenIOException